https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
# N과 M(2) 15650
"""https://www.acmicpc.net/problem/15650"""
# 15650번
n,m = list(map(int,input().split()))
s = []
def dfs(start):
if len(s) == m: # 길이가 m인 리스트가 되면 출력하고 종료
print(' '.join(map(str, s)))
return
for i in range(start, n + 1): # 현재 숫자부터 n까지 반복
if i not in s: # 선택한 숫자가 리스트에 없다면 추가하고 다음 숫자를 찾도록 재귀 호출
s.append(i)
dfs(i + 1)
s.pop() # 백트래킹: 선택한 숫자를 다시 제거하여 다른 경우의 수를 탐색
'백준 : backtraking' 카테고리의 다른 글
백준 : 치킨배달 (15686) with 파이썬 (2) | 2023.11.11 |
---|