알고리즘/백준

[백준 / Python] 10973번 이전 순열 | 초코더

cloud_nice 2020. 2. 6. 13:32

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

 

10973번: 이전 순열

첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다.

www.acmicpc.net

나의 풀이

n = int(input())
a = list(map(int, input().split()))

def next_permutation(a):
    n=len(a)-1
    i = n
    while i>0 and a[i-1]<=a[i]:
        i-=1
    if i==0:
        return False
    j=n
    while a[i-1]<=a[j]:
        j-=1
    a[i-1],a[j]=a[j],a[i-1]
    j=n
    while i<j:
        a[i],a[j]=a[j],a[i]
        i+=1
        j-=1
    return True

if next_permutation(a) is True:
    for i in a:
        print(i, end=' ')
    print()
else:
    print(-1)