문제
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
- 단, 중복되는 수열을 여러 번 출력하면 안된다.
아이디어
- 1 ⇒ 2, 3, 4
- 2 ⇒ 3, 4
- 3 ⇒ 4
- for문이 돌아갈 때, 시작점을 하나씩 늘리면 된다.
코드
python
n, m = map(int, input().split())
s = []
def dfs(start):
if len(s) == m:
print(" ".join(map(str, s)))
return
for i in range(start, n+1):
if i not in s:
s.append(i)
dfs(i+1)
s.pop()
dfs(1)