문제 분석
- 1~n까지 자연수 중 m개 고른 수열
- 같은 수를 여러번 골라도 됨 (중복 허용)
- 고른 수열은 비내림차순이여야 한다. (비내림차순 : 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하는 경우)
- 즉 순서가 o
- 중복조합 (중복 o, 순서 x)
코드 설계
- 비내림차순을 어떻게 구현할 것인가
정답 코드
import sys
input = sys.stdin.readline
n, m = list(map(int, input().split()))
ans = []
def dfs(start):
if len(ans) == m:
print(' '.join(map(str, ans)))
return
for i in range(start, n + 1):
ans.append(i)
dfs(i)
ans.pop()
dfs(1)
itertools
from itertools import combinations_with_replacement
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
arr = [i for i in range(1,n+1)]
for i in combinations_with_replacement(arr, m) :
for j in i :
print(j, end = ' ')
print()
'코딩 테스트 > 백준' 카테고리의 다른 글
[Python] 백준 10172 개 (0) | 2024.10.20 |
---|---|
[Python] 백준 14889 스타트와 링크 (0) | 2024.09.24 |
[Python] 백준 15651 N과 M (3) (0) | 2024.09.24 |
[Python] 백준 15650 N과 M (2) (0) | 2024.09.24 |
[Python] 백준 15649 N과 M (1) (0) | 2024.09.24 |