본문 바로가기
Algorithm/백준

[Python] 백준 10974번 - 모든 순열

by 애기 개발자 2023. 7. 7.
반응형

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()

 

반응형

댓글