

2가지 방법으로 풀 수 있었다 (큰 틀은 동일)
1. Array에 m 칸(0)을 채우는 방식
2. 빈 배열에 push / pop 하는 방식
(나는 이전 문제 중복 순열 구하기를 풀면서 배운 1번 방식을 적용해 풀었는데(그 문제는 2번 방식으로 풀었음)
Solution을 보니 두 방식 모두로 풀었다.
function solution(m, arr) {
let answer = [];
let tmp = [];
let check = Array.from({ length: arr.length }, () => 0);
function DFS(k) {
if (k >= m) {
answer.push(tmp.slice());
return;
}
for (let i = 0; i < arr.length; i++) {
if (check[i] !== 1) {
check[i] = 1;
tmp.push(arr[i]);
DFS(k + 1);
check[i] = 0;
tmp.pop();
}
}
}
DFS(0);
return answer;
}
let arr = [3, 6, 9];
console.log(solution(2, arr));
function solution(m, arr) {
let answer = [];
let tmp = Array.from({ length: m }, () => 0);
let check = Array.from({ length: arr.length }, () => 0);
function DFS(k) {
if (k >= m) {
answer.push(tmp.slice());
return;
}
for (let i = 0; i < arr.length; i++) {
if (check[i] !== 1) {
check[i] = 1;
tmp[k] = arr[i];
DFS(k + 1);
check[i] = 0;
}
}
}
DFS(0);
return answer;
}
let arr = [3, 6, 9];
console.log(solution(2, arr));