10이하의 N개의 자연수가 주어지면 이 중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력합 니다.
첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다. 두 번째 줄에 N개의 자연수가 오름차순으로 주어집니다.
첫 번째 줄에 결과를 출력합니다. 맨 마지막 총 경우의 수를 출력합니다. 출력순서는 사전순으로 오름차순으로 출력합니다.
32
369
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));