2021_04_23

유지원·2021년 4월 23일
0
post-thumbnail

TIL - 가위바위보 게임

1. 가위바위보 게임

문제)
-- 세 판의 가위바위보 게임을 할 경우, 한 사람은 세 번의 선택(예. 가위, 가위, 보)을 할 수 있다. 세 번의 선택으로 가능한 모든 경우의 수를 구하는 함수를 작성한다.

주의사항)
-- 중요도는 'rock', 'paper', 'scissors' 순으로 높다.
-- 가위바위보 게임의 수를 나타내는 양의 정수 rounds가 주어질 경우, 해당 rounds 동안 선택할 수 있는 모든 경우의 수를 리턴해야한다.

입출력 예시)

let output = rockPaperScissors(5);
console.log(output);
/*
    [
      ["rock", "rock", "rock", "rock", "rock"],
      ["rock", "rock", , "rock", "rock", "paper"],
      ["rock", "rock", , "rock", "rock", "scissors"],
      ["rock", "rock", "rock", "paper", "rock"],
      ["rock", "rock", "rock", "paper"s, "paper"],
      ["rock", "rock", "rock", "paper", "scissors"],
      ["rock", "rock", "rock", "scissors", "rock"],
      // ...etc ...
    ]
  */

해결방안)
-- 재귀를 이용하여 순열을 구한다.
-- 가위바위보 게임의 수를 나타내는 양의 정수 rounds가 주어지지 않을 경우에는 3으로 설정한다.

해결)

let rockPaperScissors = function (rounds) { //rounds를 전달받는다.
  if(rounds === undefined) { //rounds가 주어지지 않을 경우 3으로 할당한다.
    rounds = 3;
  }
  let resultArr = [];
  let recursion = (size, numStr) => {
    if(size === rounds) { //
      resultArr.push(numStr);
      return;
    }
    //재귀를 이용한다. (중요도에 따라)
    recursion(size + 1, numStr.concat('rock')); 
    recursion(size + 1, numStr.concat('paper'));
    recursion(size + 1, numStr.concat('scissors'));
  }
  recursion(0, []);
  return resultArr;
};
profile
안녕하세요 유지원입니다

0개의 댓글