다음 순열

면접 대비

시간 제한1초메모리 제한256 MB

요약
1부터 N까지의 순열이 주어지면 사전 순으로 바로 다음 순열을 출력하고 마지막 순열이면 -1을 출력합니다.
난이도

보통10점 중 4점

유형
배열, 투 포인터
정답자
아직 제출이 없습니다

문제

1부터 NN까지의 수로 이루어진 순열이 하나 주어진다. 이 순열의 사전순 바로 다음 순열을 구하는 프로그램을 작성하시오.

사전순으로 가장 앞서는 순열은 오름차순 순열이고, 가장 뒤에 오는 순열은 내림차순 순열이다.

N=3N = 3일 때 순열을 사전순으로 나열하면 다음과 같다.

  • 1, 2, 3
  • 1, 3, 2
  • 2, 1, 3
  • 2, 3, 1
  • 3, 1, 2
  • 3, 2, 1

입력

첫째 줄에 NN이 주어진다. (1≤N≤100001 \le N \le 10000)

둘째 줄에 1부터 NN까지의 수로 이루어진 순열이 공백으로 구분되어 주어진다.

출력

첫째 줄에 입력으로 주어진 순열의 사전순 다음 순열을 공백으로 구분해 출력한다. 주어진 순열이 사전순으로 마지막 순열이면 -1을 출력한다.

예제6

  1. 예제 1

    입력
    4
    1 2 3 4
    
    예상 출력
    1 2 4 3
    
  2. 예제 2

    입력
    5
    5 4 3 2 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    1
    1
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    2
    1 2
    
    예상 출력
    2 1
    
  5. 예제 5

    입력
    2
    2 1
    
    예상 출력
    -1
    
  6. 예제 6

    입력
    3
    2 3 1
    
    예상 출력
    3 1 2