비밀 공유

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

요약
주어진 모든 조각 문자열을 한 번씩 이어붙여 만들 수 있는 가장 작은 정수를 찾되, 0으로 시작하면 안 되고 불가능하면 INVALID를 출력합니다.
난이도

보통10점 중 6점

유형
그리디, 문자열, 정렬
정답자
아직 제출이 없습니다

문제

암호 키를 하나의 값으로 보관하는 대신 여러 사람이 나누어 보관할 수 있다. 키는 N개의 숫자 문자열 조각으로 나뉘며, 각 조각을 share라고 부른다.

새 암호 알고리즘은 매우 긴 10진 정수를 암호 키로 사용한다. 암호 키는 0이 아닌 숫자로 시작해야 하며, 모든 share를 정확히 한 번씩 이어 붙여 만들어야 한다. share의 순서는 다음 규칙으로 정한다. 모든 share를 사용해 만들 수 있는 문자열 중, 유효한 10진 정수로 보았을 때 가장 작은 값이 암호 키가 된다. 0으로 시작하는 문자열은 유효한 암호 키가 아니다.

N개의 share가 주어질 때 암호 키를 복원하라.

입력

첫째 줄에 share의 개수 N (1 <= N <= 100)이 주어진다.

다음 줄에는 N개의 숫자 문자열이 주어진다. 각 share의 길이는 최대 5이며, 0으로 시작할 수 있다.

출력

복원한 암호 키를 한 줄에 출력한다.

조건을 만족하는 암호 키가 없다면 INVALID를 출력한다.

예제4

  1. 예제 1

    입력
    5
    2 4 11 33 00
    
    예상 출력
    11002334
    
  2. 예제 2

    입력
    3
    20 202 2020
    
    예상 출력
    202020202
    
  3. 예제 3

    입력
    6
    3 4 5 3 44 555
    
    예상 출력
    334445555
    
  4. 예제 4

    입력
    3
    0 00 007
    
    예상 출력
    INVALID