Algorithm/백준
[백준] 10972 다음순열
sunnyshiny
2023. 3. 17. 19:46
728x90
https://www.acmicpc.net/problem/10972
10972번: 다음 순열
첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.
www.acmicpc.net
from itertools import permutations
n = int(input())
array = list(map(int, input().split()))
perm = list(permutations(range(1, n+1), n))
for i in range(1, len(perm)):
if list(perm[i-1]) == array:
print(' '.join(map(str, perm[i])))
break
if i == len(perm)-1:
print('-1')
메모리 초과 오류가 발생 한다 permutaion을 이용하면 메모리를 많이 차지 하기 때문에 다른 방법을 구상해야 한다.
n = int(input())
array = list(map(int, input().split()))
for i in range(n - 1, 0, -1):
if array[i - 1] < array[i]:
for j in range(n - 1, 0, -1):
if array[i - 1] < array[j]:
array[i - 1], array[j] = array[j], array[i - 1]
array = array[:i] + sorted(array[i:])
print(*array)
exit()
print(-1)
728x90