아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

문자열 접기

면접 대비

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

요약
3(AB)와 같은 반복 표기를 사용해 주어진 대문자 문자열로 펼쳐지는 가장 짧은 접힌 문자열의 길이를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 문자열
정답자
아직 제출이 없습니다

문제

Bill은 'A'부터 'Z'까지의 대문자로만 이루어진 문자열에서 반복되는 부분을 접어 더 짧게 표현하려고 한다. 예를 들어 문자열 AAAAAAAAAABABABCCD는 10(A)2(BA)B2(C)D로 표현할 수 있다.

접힌 문자열(folded sequence)과 이를 펼치는(unfolding) 규칙은 다음과 같이 정의된다.

  • 'A'부터 'Z'까지의 문자 하나로 이루어진 문자열은 접힌 문자열이다. 이 문자열을 펼치면 그 한 글자 자신이 된다.
  • SS와 QQ가 접힌 문자열이면 SQSQ도 접힌 문자열이다. SS가 S′S'로 펼쳐지고 QQ가 Q′Q'로 펼쳐지면, SQSQ는 S′Q′S'Q'로 펼쳐진다.
  • SS가 접힌 문자열이면 X(S)X(S)도 접힌 문자열이며, 여기서 XX는 1보다 큰 정수의 십진 표기이다. SS가 S′S'로 펼쳐지면 X(S)X(S)는 S′S'를 XX번 반복한 문자열로 펼쳐진다.

주어진 문자열을 접어서 만들 수 있는 접힌 문자열 중, 글자 수가 가장 적은 것의 글자 수를 구하여라.

입력

'A'부터 'Z'까지의 대문자로 이루어진 문자열 한 줄이 주어진다. 문자열의 길이는 1 이상 100 이하이다.

출력

입력 문자열로 펼쳐지는 접힌 문자열 중, 글자 수가 가장 적은 것의 글자 수를 정수 하나로 출력한다.

예제2

  1. 예제 1

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

    입력
    NEERCYESYESYESNEERCYESYESYES
    
    예상 출력
    14