Algorithm/noj.am

[Python] 백준 15649번 - N과 M (1)

SweetDev 2022. 6. 30. 17:03
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