1. 문제 링크 : https://www.acmicpc.net/problem/15652
2. 문제 티어 : 실버3
3. 문제 유형 : 백트래킹
4. 문제 풀이
1) 내림차순을 유지해야 하기 때문에 start 지점을 찾아서 인덱스를 유지 시켜줘야 한다.
2) 그 외는 N과 M(3)과 비슷하다.
3) 중복 조합을 찾아서 넣어주는 문제다.
5. 문제 코드
let result = []; // 결과를 저장할 배열
function recursive(current, start, n, m) {
if (current.length === m) {
result.push(current.join(" ")); // 길이가 M인 수열을 결과에 추가
return;
}
for (let i = start; i <= n; i++) {
current.push(i); // 숫자 추가
recursive(current, i, n, m); // 현재 숫자 i를 포함한 상태로 재귀 호출
current.pop(); // 숫자 제거 (백트래킹)
}
}
recursive([], 1, N, M); // 빈 배열로 시작
console.log(result.join("\n")); // 결과 출력
'코딩테스트 대비 > 백준 알고리즘' 카테고리의 다른 글
BOJ - 6603 로또 (1) | 2024.12.15 |
---|---|
BOJ - 10971 외판원 순회 2 (0) | 2024.12.15 |
BOJ - 15651 N과 M(3) (0) | 2024.11.24 |
BOJ - 15650 N과 M(2) (1) | 2024.11.24 |
BOJ - 7490 0 만들기 (0) | 2024.11.24 |