티스토리 뷰
def permute(N, M):
elements = [i for i in range(1, N+1)]
results = []
prev_elements = []
def dfs(elements):
if len(elements) == N-M:
results.append(prev_elements[:])
for e in elements:
next_elements = elements[:]
next_elements.remove(e)
prev_elements.append(e)
dfs(next_elements)
prev_elements.pop()
dfs(elements)
return results
N, M = map(int, input().split())
for i in permute(N, M):
print(*i)
기억할거:
백트래킹 문제는 dfs의 일종이라서 재귀로 구현해야 함.
#순열 #백트래킹 #DFS #nPr
'Algorithm > noj.am' 카테고리의 다른 글
[Python] 백준 15651번 - N과 M (2) (0) | 2022.07.01 |
---|---|
[Python] 백준 1436번 - 영화감독 숌 (0) | 2021.11.15 |
[Python] 백준 14719번 - 빗물 (0) | 2021.09.30 |
[Python] 백준 1931번 - 회의실 배정 (0) | 2021.08.13 |
[Python] 백준 1541번 - 잃어버린 괄호 (0) | 2021.08.06 |