반응형
https://www.acmicpc.net/problem/10974
10974번: 모든 순열
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
www.acmicpc.net
내 코드
import sys
input = sys.stdin.readline
n = int(input())
nlist=[]
tmp =[]
for i in range(1, n+1):
nlist.append(i)
def dfs(v):
if n == len(tmp):
print(' '.join(map(str, tmp)))
return
for i in range(1, n+1):
if i not in tmp:
tmp.append(i)
dfs(i)
tmp.pop()
dfs(nlist[0])
DFS, 사전 순으로 출력하기
사실 for 문을 통해서 nlist 에 더해줄 필요도 없는데, 그 이유는 n! 이기 때문이다.
이 말은 즉슨 자동으로 1부터 n까지의 수를 가지고 노는 것이기 때문이다.
그래서 우선 n이 tmp의 길이와 같으면 답을 출력하고,
1부터 n까지 수를 돌리면서 만약 tmp라는 임시 저장소에 있지 않은 수를 발견하면 i를 추가해준다.
반응형
'코딩테스트 대비 > 백준(BOJ)' 카테고리의 다른 글
| [Python][백준/BOJ] 2178번 : 미로탐색 (0) | 2023.07.13 |
|---|---|
| [Python][백준/BOJ] 5568번 : 카드 놓기 (0) | 2023.07.03 |
| [Python][백준/BOJ] 2178번 : 미로탐색 (0) | 2023.07.01 |
| [Python][백준/BOJ] 1012번 : 유기농 배추 (0) | 2023.07.01 |
| [Python][백준/BOJ] 2667번 : 단지번호붙이기 (0) | 2023.07.01 |