관리 메뉴

커리까지

[백준] 10974번 순열 파이썬 본문

알고리즘/풀이

[백준] 10974번 순열 파이썬

목표는 커리 2023. 1. 9. 20:24
728x90
SMALL

문제

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

제출 답안


'''
1. 아이디어
- 백트랙킹으로 구한다.
2. 시간 복잡도
- N!
3. 변수
- graph []
- rs []
- visited []
'''

import sys
input = sys.stdin.readline

n = int(input())
graph = [ i for i in range(1, n+1)]
visited = [False] * n
rs = []

def dfs(num):
    if num == n:
        print(' '.join(map(str, rs)))
        return

    for i in range(0, n):
        if not visited[i]:
            visited[i] = True
            rs.append(graph[i])
            dfs(num+1)
            visited[i] = False
            rs.pop()


dfs(0)
728x90
LIST
Comments