Algorithm/백준
[Python] 백준 10974번 - 모든 순열
애기 개발자
2023. 7. 7. 13:38
반응형
https://www.acmicpc.net/problem/10974
10974번: 모든 순열
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
www.acmicpc.net
혼자 힘으로 풀었는가? O
알고리즘 분류
- 브루트포스 알고리즘
- 백트래킹
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
전에 몇번 풀어봤던 N과 M 문제와 같은 유형의 문제이다.
스택을 이용한 재귀 즉 dfs를 잘 사용하는가가 중요했다.
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
data = []
def dfs():
if len(data) == n:
for i in range(n):
print(data[i], end=' ')
print()
return
for i in range(1, n+1):
if i not in data:
data.append(i)
dfs()
data.pop()
dfs()
반응형