[Algorithm] 중복순열 구하기 (DFS) (javaScript)

swing·2023년 9월 7일
0

[Algorithm]

목록 보기
91/96

문제

1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열 하는 방법을 모두 출력합니다.

입력설명

첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.

출력설명

첫 번째 줄에 결과를 출력합니다. 맨 마지막 총 경우의 수를 출력합니다. 출력순서는 사전순으로 오름차순으로 출력합니다.

입출력예제

입력
3 2

출력
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
9

문제 해결

const solution = (N, M) => {
  let answer = [];
  let tmp = new Array(M).fill(0);

  const dfs = (l) => {
    if (l === M) {
      console.log(tmp.slice());
      answer.push(tmp.slice());
    } else {
      for (let i = 1; i <= N; i++) {
        tmp[l] = i;
        dfs(l + 1);
      }
    }
  };

  dfs(0);
  return answer.length;
};

const tmp = solution(3, 2);
console.log(tmp);
/* 
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
9
*/
profile
if(기록📝) 성장🌱

0개의 댓글