728x90
1. 문제 요약
1부터 N까지의 자연수를 사용하여 길이가 M인 수열을 생성하라
- 같은 수를 여러 번 골라도 된다.
- 고른 수열은 비내림차순이어야 한다.
- 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.
2. 접근 방법
재귀 함수를 사용합니다.
15650(조합) 과 15651 을 적절히 섞으면 됩니다.
3. 파이썬
from sys import stdin
input = stdin.readline
def solution(start: int, depth: int):
if depth == M:
print(' '.join(map(str, arr)))
return
for i in range(start, N + 1):
arr[depth] = i
solution(i, depth + 1)
N, M = map(int, input().split())
arr = [0] * M
solution(1, 0)
4. 자바
static int N, M;
static int[] arr;
static StringBuilder sb = new StringBuilder();
static void solution(int start, int depth) {
if (depth == M) {
for (int i : arr) {
sb.append(i).append(' ');
}
sb.append('\n');
return;
}
for (int i = start; i <= N; i++) {
arr[depth] = i;
solution(i, depth + 1);
}
}
// solution(1, 0);
5. 전체 코드
728x90
'개발일지 > Algorithm' 카테고리의 다른 글
백준 - 15650 N과 M (6) [조합] (0) | 2023.09.28 |
---|---|
백준 - 15654 N과 M (5) [순열] (0) | 2023.09.28 |
백준 - 15651 N과 M (3) [백트래킹] (0) | 2023.09.28 |
백준 - 15650 N과 M (2) [조합] (0) | 2023.09.27 |
백준 - 15649 N과 M (1) [순열] (0) | 2023.09.26 |