문제)
-- 세 판의 가위바위보 게임을 할 경우, 한 사람은 세 번의 선택(예. 가위, 가위, 보)을 할 수 있다. 세 번의 선택으로 가능한 모든 경우의 수를 구하는 함수를 작성한다.
주의사항)
-- 중요도는 '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; };