공부 기록장

[백준 - Python] 10974. 모든 순열 (완전 탐색) 본문

코딩 테스트/백준 문제 풀이

[백준 - Python] 10974. 모든 순열 (완전 탐색)

빛나무 2024. 2. 1. 18:34

https://www.acmicpc.net/problem/10974

 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

코드

from itertools import permutations

n = int(input())
arr = [i for i in range(1, n+1)]
per = list(permutations(arr, n))

for p in per:
    print(*p)

 

순열 라이브러리를 활용해서 풀었다.

 

리스트 뿐만 아니라 튜플도

*표시를 통해 숫자를 띄어쓰기로 구분하여 한 줄에 간편하게 출력할 수 있다.

 

 

다른 풀이

순열 라이브러리를 활용하지 않고 백트래킹을 활용한 풀이도 있었다.

 

n = int(input())
temp = []

def backtracking():
    if len(temp) == n:
        print(*temp)
        return
    for i in range(1, n+1):
        if i not in temp:
            temp.append(i)
            backtracking()
            temp.pop()
            
backtracking()

 

백트래킹의 기본 예시로 알아둬도 좋을 것 같다.

 

이번 문제에서는 백트래킹 보다는 순열 라이브러리를 활용하는 풀이가 더 수행 속도가 빨랐다.

 

 

참고 자료

https://honggom.tistory.com/115