728x90
반응형
문제 바로가기
문제:
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 를 사용해도 된다.
반응형
댓글