728x90
Rock Paper Scissor 문제
recursion 활용 알고리즘 문제
TIP
recursion (재귀함수)의 활용,
배열 concat해서 합쳐주기
적절한 if문 사용해주기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /* * 세 판의 가위바위보를 할 동안 낼 수 있는 모든 경우의 수를 return하는 함수를 작성하세요. * * 결과는 다음과 같을 것입니다. * [["rock", "rock", "rock"], * ["rock", "rock", "paper"], * ["rock", "rock", "scissors"], * ["rock", "paper", "rock"], * ...etc ... * ] * Advanced: * 변수로 전달하는 판수에 맞는 정답을 return 하도록 작성한 함수를 바꿔 보세요. * rockPaperScissors(5); // => [['rock', 'rock', 'rock', 'rock', 'rock'], etc...] */ //1차로 짠 코드 const rockPaperScissors = function () { const rps = ["rock", "paper", "scissor"]; const res = []; function recur(res2, count) { if (count === 3) { res.push(res2); } //여기서 res 배열에 푸쉬된 후, 다시 돌아가야 하는데 계속 반복되고 있다. rps.forEach((ele) => recur(res2.concat(ele), count++)); //변수안에 바로 count++를하고 디버깅을 하니, 변수의 증감이 //반영이 안되었다. } recur([], 0); return res; }; //2차로 짠 코드 => 테스트 통과 const rockPaperScissors = function(numbuer) { if(numbuer === undefined){ numbuer = 3; }//advanced 고려한 코드 let rps = ["rock", "paper", "scissors"]; let allRes = []; let game = function(res, count){ if(count === numbuer){ allRes.push(res); //push 부분을 recur 안에 넣어줘야한다. } else { rps.forEach((elem) => { game(res.concat(elem), count+1); }) } }; game([],0); return allRes; }; | cs |
728x90
'CS STUDY > Algorithm&Data structure' 카테고리의 다른 글
[JS]알고리즘 문제풀이5_bind( )함수 (0) | 2020.11.06 |
---|---|
[JS]알고리즘 문제풀이4_재귀활용 (0) | 2020.11.06 |
[JS]알고리즘 문제풀이3_재귀활용 (0) | 2020.11.06 |
[JS]알고리즘 문제풀이1_해시테이블 활용 (0) | 2020.11.03 |
해시테이블(HashTable)과 해시함수(HashFunction)에 대해서 (0) | 2020.11.02 |