알고리즘/백준

[Silver III] 모든 순열 - 10974 (python)

KimMinGyun 2024. 7. 1. 23:51

문제 링크

 

분류

백트래킹, 브루트포스 알고리즘

 

문제 설명

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.

출력

첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.

 

코드

 

def dfs(a, c):
    if c == n:
        print(*a)
        return

    for i in range(n):
        if vis[i] == 0:
            vis[i] = 1
            dfs(a + [arr[i]], c+1)
            vis[i] = 0


n = int(input())
arr = [i for i in range(1, n+1)]
vis = [0]*n
ans = []
dfs([], 0)