Inverse Look-and-Say

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

요약
양의 정수 n이 주어질 때 look-and-say 규칙으로 f(x) = n을 만족하는 유일한 x를 찾고, 없으면 -1을 출력한다.
난이도

보통10점 중 5점

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

문제

다음과 같은 수열을 생각해보자: 2→12→1112→3112→132112→1113122112→…2 → 12 → 1112 → 3112 → 132112 → 1113122112 → \dots.

이 수열의 초기값은 22이고, 이후의 수들은 다음과 같이 생성된다.

  • 22에는 “11개의 22”가 있으므로, 다음 값은 1212이다.
  • 1212에는 “11개의 11, 11개의 22”가 있으므로 다음 값은 11121112이다.
  • 11121112에는 “33개의 11, 11개의 22”가 있으므로 다음 값은 31123112이다.
  • 31123112에는 “11개의 33, 22개의 11, 11개의 22”가 있으므로, 다음 값은 132112132112이다.

이 수열은 이러한 “look-and-say” 규칙으로 생성된다. 이 수열에서 다음 항을 계산하는 규칙을 양의 정수 x>0x > 0에 적용해서 나오는 수를 f(x)f(x)라고 하자. 즉, f(2)=12f(2) = 12, f(12)=1112f(12) = 1112, f(1112)=3112f(1112) = 3112, f(3112)=132112f(3112) = 132112와 같이 주어지는 양의 정수에 대해 이를 십진법으로 읽었을 때 연속되는 숫자의 개수를 보이는 대로 읽어서 만들어지는 수를 의미한다.

양의 정수 xx에 연속해서 나타나는 숫자가 99회를 넘지 않을 때에만 f(x)f(x)가 정의되며, “look-and-say” 규칙을 적용하여 f(x)=nf(x) = n인 nn을 얻을 수 있다. 여러분이 할 일은 입력으로 양의 정수 nn이 주어질때, f(x)=nf(x) = n인 양의 정수 xx를 구하는 것이다. xx가 존재한다면 그 값은 유일하다. 주의할 점은 어떤 양의 정수 nn은 그러한 xx를 가지지 않는다는 것이다. 예를 들어, f(x)=311f(x) = 311인 양의 정수 xx는 존재하지않는다. 또한 f(x)=1111f(x) = 1111인 양의 정수 xx 역시 존재하지 않는다. 11111111의 경우 “11개의 11, 11개의 11”로 해석하여 xx가 1111이라 생각할 수 있으나, f(11)=21f(11) = 21이다. 어떤 양의 정수도 이 “look-and-say” 규칙에 따라 11111111을 생성할 수 없다.

입력

입력으로 첫 줄에 101,00010^{1\\,000}보다 작은 양의 정수 nn이 주어진다.

출력

f(x)=nf(x) = n인 양의 정수 xx가 존재한다면 그 값을 출력하고, 그렇지 않다면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    132112
    
    예상 출력
    3112
    
  2. 예제 2

    입력
    331
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    1111
    
    예상 출력
    -1