Algorithm/인프런(inflearn)
[JavaScript/section 8] 14 - 조합 구하기
_성호_
2022. 11. 12. 16:18
728x90
반응형
📌 14 - 조합 구하기
1부터 N까지 번호가 적힌 구슬이 있다. 이 중 M개를 뽑는 방법의 수를 출력하는 문제이다.
M개를 뽑는다고 했으므로 조합을 이용해야 한다. N이 4이고 M이 2인 경우를 생각해보자❗
위 그림과 같이 L1이 정해지면 L2는 L1 + 1부터 N까지 for 문을 돌면서 정해진다.
📝 풀이 방법
s는 for문에서 초기값에 해당한다. 다음과 같이 그림으로 한번 이해하고 외우도록 하자(중요❗)
- L(레벨)이 m과 같다면 하나의 경우가 만들어진 것이므로 tmp를 얕은 복사(slice)하여 answer에 추가한다.
function solution(n, m) {
let answer = [];
let tmp = Array.from({ length: m }, () => 0);
function DFS(L, s) {
if (L === m) answer.push(tmp.slice());
else {
for (let i = s; i <= n; i++) {
tmp[L] = i;
DFS(L + 1, i + 1);
}
}
}
DFS(0, 1);
return answer;
}
console.log(solution(4, 2));