1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열
하는 방법을 모두 출력합니다.
Input | Output |
---|---|
[3,2] | [[1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]] |
temp
를 탐색한다.temp
의 depth
번째 원소에 i
를 넣으면, 각 depth
마다 i
부터 N
까지의 수가 채워진다.i
를 한번 채웠으면 바로 다시 DFS를 호출함으로써 깊이를 늘린다.count
와 같아지면, answer
배열에 temp
의 복사본을 삽입한다.temp
배열은 1
부터 N
까지 커지며, count
개의 원소를 갖게 된다. const solution = (N, count) => {
let answer = [];
let temp = new Array(count);
temp.fill(0);
const DFS = (depth) => {
if (depth === count) answer.push([...temp]);
else {
for (let i = 1; i <= N; i++) {
temp[depth] = i;
DFS(depth + 1);
}
}
};
DFS(0);
return answer;
};