본문 바로가기

알고리즘구현능력/문제해결능력

알고리즘 토이 문제 1 풀기. 가위바위보 모든 경우의 수의 배열 구하기..

가위바위보를 했을때 나올 수 있는 모든 경우의 수를 구해볼려고 한다.

예를들어 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

 

Array.prototype.concat()

concat() 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환합니다.

developer.mozilla.org

push에 대해서도 리턴값을 살펴보면 좋다. 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/push

 

Array.prototype.push()

push() 메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다.

developer.mozilla.org

정답은 ....?  모르겠으면 어떤 부분이 모르겠는지 댓글로 물어보라..

이미 핵심적인 힌트는 다 주었다.