조합은 중복해서 뽑을 수 없기 때문에 L(level)뿐 아니라 하나의 인자가 더 필요하다
만약 1이 고정되있다고 하면 그다음수는 1다음부터 for문을 돌려야 한다
그래서 DFS(0)은 1부터 for문이 돌지만
그다음부터는 어떤 수가 고정되 있느냐에 따라 for문의 시작숫자가 달라져야 한다
예시 : 4개중 2개뽑기
1고정 : (1,2 1,3 1,4) 2고정 : (2,3 2,4) 3고정 : (3,4)
function solution(m, n) {
const answer = [];
const tem = Array.from({ length: n });
function DFS(L, startNumber) {
if (L === n) answer.push(tem.slice());
else {
for (let i = startNumber; i <= m; i++) {
tem[L] = i;
DFS(L + 1, i + 1);
}
}
}
DFS(0, 1);
return answer;
}
궁금했던 점 - > 그럼 L이 0일때 i가 끝 숫자가 되면 어떻게 되나??
for문에 걸려서 재귀함수가 실행되지 않는다
예시) tem[0]=4 DFS(1,5)
L은 n이 아니여서 else로 가서 for문을 만나는데 i가 m보다 크기 때문에 for문이 실행이 되지 않는다