중복순열

minho·2021년 11월 25일
0

문제풀이


위의 그림처럼 각 자리에 들어갈 수 있는 경우의 수는 3이므로 총 경우의 수는 3 x 3 = 9이다.


1. L = m일때 재귀함수에서 탈출 하는 구조이다.
2. 각각의 층(L)에서 DFS는 반복문을 통해 모든 수를 순환해야 한다.
3. L = m의 값들은 결국 m자리로 만들수 있는 모든 값이다.

function solution(n, m){
        let answer= 0;
        let tmp=Array.from({length:m}, ()=>0);
        function DFS(L){
            if(L===m){
                console.log(tmp);
                answer += 1;
            }
            else{
                for(let i=1; i<=n; i++){
                    tmp[L]=i;
                    DFS(L+1);
                }
            }   
        }
        
        DFS(0);
        return answer;
    }

햇갈렸던 점

else 구문
else에서 L이 m(2)에 도달하면 L은 그 전 층인 1로 돌아가 tmp[L]에 i의 값을 넣어준다.

profile
Live the way you think

0개의 댓글