순열 구하기 - Node.js

프동프동·2022년 8월 8일
0

알고리즘 - Node.js

목록 보기
94/116
post-thumbnail

순열 구하기


문제

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

입력

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

출력

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

입력 예시 1

32
369

출력 예시 1

36
39
63
69
93
96
6


해결방법

function solution(M, array) {
  let answer = [];
  let array_length = array.length;
  let channel = Array.from({ length: array_length }, () => 0);
  let temp = Array.from({ length: M }, () => 0);
  function DFS(Level) {
    if (Level === M) {
      answer.push(temp.slice());
    } else {
      for (let i = 0; i < array_length; i++) {
        if (channel[i] === 0) {
          channel[i] = 1;
          temp[Level] = array[i];
          DFS(Level + 1);
          channel[i] = 0;
        }
      }
    }
  }
  DFS(0);
  return answer;
}

let N = [3, 6, 9];
let M = 2;
console.log(solution(M, N));

profile
좋은 개발자가 되고싶은

0개의 댓글