[백준 문제] P10972 다음 순열(파이썬)


[백준 문제] P10972 다음 순열(파이썬)

핵심은 앞에 픽스하고 뒷자리 최종자리 수열인거 찾아서 바로 앞자리 바꿔주고 최초 수열로 바꾸기!!

참고 사이트

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]: # 오른쪽에 있으면서 a[i-1]보다 큰 수
        j -= 1
    a[i-1], a[j] = a[j], a[i-1] # SWAP
    j = n
    while i < j:
        a[i], a[j] = a[j], a[i] # a[i]부터 순열 뒤집기
        i += 1
        j -= 1
    return True

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

if next_permutation(a) is True:
    for i in a:
        print(i, end=' ')
    print()
else:
    print(-1) # 마지막 순열
7
7 2 3 6 5 4 1
7 2 4 1 3 5 6 





© 2018. by statssy

Powered by statssy