-
rockPaperScissors - 가위, 바위, 보 경우의 수 출력etc/coding test 2020. 2. 14. 23:21
조건
1. 3명이 가위, 바위, 보를 했을 때 나오는 모든 경우의 수 출력
2. 2차 배열로 리턴
extra credit 매개변수를 받아서 3명이 아니라 매개변수만큼 참여자가 있는 경우의 수 출력하기
문제 처음 풀었을 때
엑스트라 크레딧은 버리고, 3명인 경우만 먼저 맞추자! 해서 for문을 3번 돌렸다^__^,,
var rockPaperScissors = function (num) { const rps = ["rock", "paper", "scissors"]; var resultArray = []; var sequence = []; for(var i=0; i<rps.length; i++){ sequence.push(rps[i]); for(var j=0; j<rps.length; j++){ sequence.push(rps[j]); for(var z=0; z<rps.length; z++){ sequence.push(rps[z]); resultArray.push(sequence.concat()); sequence.pop(); } sequence.pop(); } sequence.pop(); } return resultArray; };
재귀함수를 사용해서 다시 풀었다. (2020.4.18)
var rockPaperScissors = function (num) { const rps = ["rock", "paper", "scissors"]; const result = []; function recursion(sequence) { if (sequence.length === num) { result.push(sequence); return; } else { for (let i = 0; i < 3; i++) { const newSequence = [...sequence]; newSequence.push(rps[i]); recursion(newSequence); } return; } } recursion([]); return result; };
주의할 점은 배열은 참조변수이기 때문에 재귀함수로 다시 넘길 때는 복사(딥카피)한 후에 넘겨줘야 한다는 것이다.
'etc > coding test' 카테고리의 다른 글
프로그래머스 - 괄호 변환 (JavaScript) (0) 2020.04.19 프로그래머스 - 크레인 인형뽑기 게임 (JavaScript) (0) 2020.04.18 nthFibonacci - 피보나치 수열의 n번째 숫자 찾기 (0) 2020.02.15 isSubsetOf - 배열이 완전히 포함되는지 확인하는 배열 메서드 작성 (0) 2020.02.15 firstNonRepeatedCharacter - 반복되지 않는 첫문자 찾기 (0) 2020.02.15