반응형
https://www.acmicpc.net/problem/10974
혼자 힘으로 풀었는가? 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()
반응형
'Algorithm > 백준' 카테고리의 다른 글
[Python] 백준 9020번 - 골드바흐의 추측 (0) | 2023.07.10 |
---|---|
[Python] 백준 4948번 - 베르트랑 공준 (0) | 2023.07.09 |
[Python] 백준 1004번 - 어린 왕자 (0) | 2023.07.06 |
[Python] 백준 14425번 - 문자열 집합 (0) | 2023.07.05 |
[Python] 백준 13305번 - 주유소 (0) | 2023.07.04 |
댓글