알고리즘/백준
[백준 / Python] 10972번 다음순열 | 초코더
cloud_nice
2020. 2. 6. 13:31
https://www.acmicpc.net/problem/10972
10972번: 다음 순열
첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -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
#만약 i가 0이라면 리스트가 완벽한 내림차순이므로 False리턴
if i==0:
return False
#값을 swap
j = n
while a[i-1]>=a[j]:
j-=1
a[i-1],a[j]=a[j],a[i-1]
#i이후의 값들을 정렬(=끝에서부터 앞의 수와 차례로 swap)
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)