티스토리 뷰

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/12   »
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 29 30 31
글 보관함