가위바위보를 했을때 나올 수 있는 모든 경우의 수를 구해볼려고 한다.
예를들어 1을 입력하면 한명이서 3(가위,바위,보) 세가지 경우가 나오고
예를들어 2를 입력하면 두명이서 3 x 3 9가지 경우의 수가 나온다.
n을 입력하면 n명이서 3^n승의 경우의 수가 나온다.
함수에 1을 입력하면 ['rock'],['scissors'],['paper'] 을 출력하고
함수에 2를 입력하면 ['rock','rock'] ,['rock','scissors'],['rock','paper],['scissors','rock'],['scissors','scissors'],['scissors','paper'],['paper','rock'],['paper','sissors'],['paper','paper']
이걸 그림으로 표현해보자..
다음과 같이 세가지 경우가 있다 .
1
2
3
4
5
6
7
8
9
|
function recursion(count,element){ //count 몇개까지 담겼는지 체크할 변수 , element는 담는 곳..
if(count === value){
reuslt.push(element); //여기서 왜 result.push(element)를 따로 뒀을까요? push로 리턴하는 값은 값을 넣고나서의 배열의 길이입니다.
return;
}
recursion(count+1,element.concat(arr[0])); //가위바위보 바위일때,,
recursion(count+1,element.concat(arr[1])); //가위바위보 가위일떄,,
recursion(count+1,element.concat(arr[2])); //가위바위보 보자기일떄,,
}
|
cs |
해당 함수를 이용하면 쉽게 풀수가있다...
result는 담을 그릇이다. 경우의수를 ..
concat은 배열끼리 합칠떄 쓰는 메소드 이다. 아래 mdn을 참고하기 바란다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
push에 대해서도 리턴값을 살펴보면 좋다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/push
정답은 ....? 모르겠으면 어떤 부분이 모르겠는지 댓글로 물어보라..
이미 핵심적인 힌트는 다 주었다.
'알고리즘구현능력 > 문제해결능력' 카테고리의 다른 글
알고리즘 토이 문제 3번째 부분집합인지 아닌지 불린값 반환문제 (0) | 2020.01.08 |
---|---|
알고리즘 토이 문제 2. 중복되지 않는 문자를 반환하는 문제. (0) | 2020.01.08 |
[javascript] 프로그래머스 - 큰 수 만들기 (0) | 2019.12.12 |
[javascript] 프로그래머스 - 기능개발 (0) | 2019.12.11 |
[javascript] 프로그래머스 - 스킬트리 (0) | 2019.12.11 |