만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

연속값 피하기 정렬

시간 제한2초메모리 제한128 MB

요약
최대 50개의 정수를 재배열해서 어떤 수 바로 뒤에 그보다 1 큰 수가 오지 않도록 하면서 사전순으로 가장 작은 수열을 만듭니다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

N개의 정수가 주어진다. 이 정수들을 모두 사용해 수열 A로 재배열하되, 모든 인접한 위치에 대해 A[i] + 1 != A[i+1]이 되게 해야 한다. 즉, 어떤 수 바로 다음에 그 수보다 정확히 1 큰 수가 오면 안 된다.

조건을 만족하는 재배열이 여러 개라면 사전순으로 가장 앞서는 것을 출력한다.

입력

첫째 줄에 N이 주어진다. N은 50 이하의 자연수이다.

둘째 줄에는 N개의 정수가 주어진다. 각 정수는 0이거나 1000 이하의 자연수이다.

출력

조건을 만족하는 사전순으로 가장 앞서는 수열을 한 줄에 출력한다. 수는 공백으로 구분한다.

예제5

  1. 예제 1

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

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

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

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

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