n을 받아 가위바위보의 총 경우의 수를 구하시오.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", "paper"],
["rock", "rock", "rock", "paper", "scissors"],
["rock", "rock", "rock", "scissors", "rock"],
// ...etc ...
]
*/
let output = rockPaperScissors();
console.log(output);
/*
[
["rock", "rock", "rock"],
["rock", "rock", "paper"],
["rock", "rock", "scissors"],
["rock", "paper", "rock"],
// ...etc ...
]
*/
function rockPaperScissors (n = 3) {
let arr = ["rock", "paper", "scissors"] //가위바위보 배열
let ans = []; // 정답 출력 배열
function dfs(count, arr, res) { //count = 사람의 수 ,res = 각각 사람마다 무엇을 내었는지 담아낼 배열
let result = [...res] // 참조형이기 때문에 스프레드 문법을 통해 값을 직접 선언해준다.
if (count === 0) {
ans.push(res)
return
}
for (let i = 0; i < arr.length; i++) {
result.push(arr[i]) // 각각 사람들이 무엇을 내었는지 확인하는 배열
dfs(count - 1, arr,result ) // count - 1을 통해 한 명씩 내었다는 것을 반환해준다.
result = [...res] // 다른 경우의 수가 올 수 있으니 다시 초기 값으로 초기화 시켜준다.
}
}
dfs(n, arr, [])
return ans
};