티스토리 뷰

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

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함