본문 바로가기
백준알고리즘/백트래킹

(Python/🥈3)백준리즘알고리즘 10974번:모든 순열

by windy7271 2023. 7. 23.
728x90
반응형

문제 바로가기 

https://www.acmicpc.net/problem/10974
모든순열

 

문제:

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

입력:

첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.

출력:

첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.

 

풀이:

 

import sys
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')

n = int(input())
res = []
def bt(x):
    if n == len(res):
        print(*res)
        return
    for i in range(1,n+1):
        if i not in res:
            res.append(i)
            bt(x+1)
            res.pop()
bt(1)

 

백트래킹에 조건만 걸어주면 된다.

 

import itertools

N = int(input())
nums = []
for i in range(1, N + 1):
    nums.append(int(i))

result = list(map(' '.join, itertools.permutations(map(str, nums))))

for i in range(len(result)):
    print(result[i])

 

이렇게 내장함수 permutations 를 사용해도 된다.

 

 

반응형

댓글