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

swing·2023년 9월 11일
0

[Algorithm]

목록 보기
93/96

문제

10이하의 N개의 자연수가 주어지면 이 중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력합니다.

입력설명

첫 번째 줄에 M(2<=M<=N)과 N(3<=N<=10)개의 자연수가 오름차순으로 주어집니다.

출력설명

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

입출력예제

입력
2,[3,6,9]

출력
3 6
3 9
6 3
6 9
9 3
9 6
6

문제 해결

const solution = (M, arr) => {
  let answer = 0;
  let checkArr = new Array(arr.length).fill(0);
  let tmp = new Array(M).fill(false);

  const dfs = (l) => {
    if (l === M) {
      answer++;
      console.log(tmp.slice());
    } else {
      for (let i = 0; i < arr.length; i++) {
        if (!checkArr[i]) {
          checkArr[i] = true;
          tmp[l] = arr[i];
          dfs(l + 1);
          checkArr[i] = false;
        }
      }
    }
  };

  dfs(0);
  return answer;
};

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

0개의 댓글