IF - 조합
문제
1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 M개를 뽑는 방법의 수를 출력하는 프로그
램을 작성하세요.
예시
Input | Output |
---|---|
[4,2] | [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]] |
풀이 및 회고
- 순열과 달리, 구슬의 순서도 고려해야 한다. 예를 들어
[1,4]
가 뽑혔다면[4,1]
은 경우의 수에 포함되지 않는다. - DFS 를 실행할 때 else 조건에서 for문을 돌 때, i 의 시작점이 DFS를 돌 때마다 1씩 커지도록 해야 한다.
- 그래야
[1,2]
,[1,3]
,[1,4]
까지 순회하고 나온 다음부터 임시 배열의 첫 인덱스를 이미 고려했던1
이 아닌,2
로 시작할 수 있다.
코드
const solution = (n, m) => {
const answer = [];
const temp = [];
const DFS = (L, S) => {
if (L === m) answer.push([...temp]);
else {
for (let i = S; i <= n; i++) {
temp[L] = i;
DFS(L + 1, i + 1);
}
}
};
DFS(0, 1);
return answer;
};
Author And Source
이 문제에 관하여(IF - 조합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goody/IF-조합저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)