from itertools import permutations
n = int(input())
arr = list(map(int, input().split()))
ans = [i for i in arr] # 정렬 후 같이 저장되어버려서 이렇게함
memory = []
arr.sort()
for i in permutations(arr):
memory.append(i)
leng = len(memory)
for i in range(leng):
if memory[i] == memory[-1]:
print(-1)
elif ans == list(memory[i]):
print(" ".join(map(str,memory[i+1])))
break
from itertools import permutations
import sys
n = int(sys.stdin.readline())
arr = list(map(int, sys.stdin.readline().split()))
ans = [i for i in arr] # 정렬 후 같이 저장되어버려서 이렇게함
ans_reverse = [i for i in arr] # 정렬 후 같이 저장되어버려서 이렇게함
arr.sort() # 테케 2번같은 입력을 permutations하면 결과가 안나와서 정렬해줌
ans_reverse.sort(reverse = True)
flag = False
for i in permutations(arr):
if flag == True:
print(" ".join(map(str,i)))
break
if list(i) == ans_reverse:
print(-1)
elif list(i) == ans:
flag = True
C++에서 next_permutation을 사용하면 쉽게 풀 수 있지만, python에선 이를 직접 구현해야된다고 함
결국 규칙을 찾아야 풀 수 있는 문제인데
---[1 4 3 2]를 예로 들어보자---
뒤에서부터 순열을 비교하며, 뒷 값이 앞 값보다 큰 경우를 찾기만 한다.
찾으면 다시 뒤에서부터 x보다 큰 값을 찾아 swap한다
y부터 끝까지 내용물을 sorting한 다음 x 뒤에 concat한다
if문에서 다 걸러졌기 때문에 경우가 없으면 print(-1)
# https://velog.io/@wlrhkd49/백준-10972-다음-순열-Python
# https://ji-gwang.tistory.com/262
n = int(input())
arr = list(map(int, input().split()))
#arr = [1,4,3,2]
for i in range(n-1, 0, -1): # 끝에서부터 앞 값이랑 비교하기 위해 idx=1까지 반복
if arr[i-1] < arr[i]:
for j in range(n-1, -1, -1):
if arr[i-1] < arr[j]:
arr[i-1], arr[j] = arr[j], arr[i-1]
ans = arr[:i] + sorted(arr[i:])
print(" ".join(map(str,ans)))
exit()
print(-1)