

function solution(n, m) {
let answer = [];
let arr = [];
function DFS(cnt) {
if (cnt > m) {
answer.push(arr);
return;
}
for (let i = 1; i <= n; i++) {
arr.push(i);
DFS(cnt + 1);
arr.pop();
}
}
DFS(1);
return answer;
}
console.log(solution(3, 2));
처음에 이렇게 풀었는데...
답이 이렇게 나오는 것이 아닌가

당최 이해가 되지 않았는데...
설마 싶어서 해보니
function solution(n, m) {
let answer = [];
let arr = [];
function DFS(cnt) {
if (cnt > m) {
let temp = arr.slice();
answer.push(temp);
return;
}
for (let i = 1; i <= n; i++) {
arr.push(i);
DFS(cnt + 1);
arr.pop();
}
}
DFS(1);
return answer;
}
console.log(solution(3, 2));
answer.push(arr)을 하고 나서
arr을 수정하고 나니,answer안의arr도 변했다.....
이 무슨......
function solution(n, m) {
let answer = [];
let tmp = Array.from({ length: m }, () => 0);
function DFS(L) {
if (L === m) {
answer.push(tmp.slice());
} else {
for (let i = 1; i <= n; i++) {
tmp[L] = i;
DFS(L + 1);
}
}
}
DFS(0);
return answer;
}
console.log(solution(3, 2));
전반적으로 내가 푼 풀이와 비슷한 것 같다
(나는 빈 배열에 push를 했고, solution에서는 세 칸을 만들어 놓고 각 칸에 숫자를 바꾼 것만 다르다)