2023-10-14-동국대SW역량강화캠프-4154. 모든 순열
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
예제 1 입력
3
예제 1 출력
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
예제 2 입력
4
예제 2 출력
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
Source
n = int(input())
li = [0 for _ in range(n + 1)]
visited = [0 for _ in range(n + 1)]
def dfs(k, li, visited):
global n
if(k == n + 1):
for i in range(1, n + 1):
print(li[i], end=' ')
print('\n', end='')
return
for i in range(1, n + 1):
if(visited[i] == 1):
continue
li[k] = i
visited[i] = 1
dfs(k + 1, li, visited)
li[k] = 0
visited[i] = 0
dfs(1, li, visited)