본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 10974 모든 순열

by Alan_Kim 2023. 1. 9.
728x90
반응형

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

 

10974번: 모든 순열

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

www.acmicpc.net

풀이 과정

총 출력 개수는 n!

현재 순열을 출력하고 사전식 수열에서 다음에 나올 수 있는 순열로 정렬하는 방법은 이전 문제에서 푼 적이 있다.

https://thought-process-ing.tistory.com/92

 

[python] 백준 10972 다음 순열

https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문

thought-process-ing.tistory.com

 

CODE

import sys
input = sys.stdin.readline
import math
n = int(input())
A = [i for i in range(1,n+1)]
m = math.factorial(n)
for _ in range(m):
    x = 0
    print(*A)
    for j in range(n-1,0,-1):
        if A[j-1] < A[j]:
            for k in range(n-1,0,-1):
                if A[j-1] < A[k]:
                    A[j-1], A[k] = A[k], A[j-1]
                    A = A[:j] + sorted(A[j:])
                    x = 1
                    break
        if x==1:
            break
728x90
반응형

댓글