만드는 중입니다

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

Fumblemore 교수와 콜라츠 추측

면접 대비

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

요약
E와 O로 이루어진 문자열이 주어졌을 때, 이 문자열을 콜라츠 수열 타입으로 갖는 가장 작은 양의 정수를 찾습니다. 형식이 잘못되면 INVALID를 출력합니다.
난이도

보통10점 중 4점

유형
완전 탐색, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

양의 정수에 대한 콜라츠 함수 C(n)C(n)은 다음과 같다.

  • nn이 짝수이면 C(n)=n/2C(n) = n/2
  • nn이 홀수이면 C(n)=3n+1C(n) = 3n+1

양의 정수 nn의 콜라츠 수열 CS(n)CS(n)은 CS(n)=n,C(n),C(C(n)),C(C(C(n))),…CS(n) = n, C(n), C(C(n)), C(C(C(n))), \ldots 이다.

예를 들어 CS(12)=12,6,3,10,5,16,8,4,2,1,4,2,1,…CS(12) = 12, 6, 3, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, \ldots 이다.

콜라츠 추측(3n+1 문제라고도 한다)은 모든 양의 정수 nn에 대해 CS(n)CS(n)이 결국 4, 2, 1을 반복하며 끝난다는 추측이다. 이 추측의 참 여부는 아직 밝혀지지 않았다. 증명은 나오지 않았고, 매우 큰 값까지 반례도 발견되지 않았다.

Fumblemore 교수는 콜라츠 수열 유형을 이용해 이 문제를 연구하려 한다. 정수 nn의 콜라츠 수열 유형 CST(n)CST(n)은 CS(n)CS(n)의 값들이 짝수인지 홀수인지를 E(짝수)와 O(홀수)로 나타낸 문자열이다. 단, 처음으로 나오는 2의 거듭제곱은 포함하지 않는다. 따라서

CST(12)=EEOEOCST(12) = EEOEO

이다.

참고로

CS(908)=908,454,227,682,341,1024,512,256,128,64,32,16,8,4,3,2,…CS(908) = 908, 454, 227, 682, 341, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 3, 2, \ldots

이므로 12와 908은 같은 CST를 가진다.

Fumblemore 교수에게는 E와 O로 이루어진 문자열을 입력받아, 그 문자열이 CST(n)CST(n)이 되는 가장 작은 정수 nn을 구하는 프로그램이 필요하다.

참고:

  • E는 2의 거듭제곱이 아닌 짝수이다.
  • O는 1보다 큰 홀수이다.
  • 문자열의 마지막 글자는 반드시 O여야 한다(C(n)C(n)이 2의 거듭제곱이면 nn도 2의 거듭제곱이다).
  • O가 연속으로 나올 수 없다. 홀수의 CC 값은 짝수이기 때문이다.
  • Fumblemore 교수는 타자를 잘 치지 못하므로, nn을 찾기 전에 입력이 유효한지 반드시 확인해야 한다. 즉 문자열은 E와 O만 포함하고, O로 끝나며, O가 인접하지 않아야 한다.

입력

E와 O로 이루어진 문자열이 한 줄에 최대 50글자까지 주어진다.

출력

입력 수열이 유효하지 않으면 INVALID를 한 줄에 출력한다. 그렇지 않으면 입력 수열이 CST(n)CST(n)이 되는 가장 작은 정수 nn을 한 줄에 출력한다. 입력은 n≤247n \le 247이 되도록 주어진다.

예제2

  1. 예제 1

    입력
    EEOEO
    
    예상 출력
    12
    
  2. 예제 2

    입력
    EEOOEO
    
    예상 출력
    INVALID