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

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

동형 역전

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

요약
숫자 문자열을 여러 개의 연속한 조각으로 나눌 때, 조각들의 나열이 앞뒤로 같은 최대 조각 수를 구한다.
난이도

어려움10점 중 8점

유형
그리디, 문자열 매칭, 투 포인터, 해시맵
정답자
아직 제출이 없습니다

문제

길이가 최대 10610^6인 숫자 문자열 ss가 주어진다. ss를 kk개의 연속한 부분 문자열로 나누었을 때, 이 kk개의 조각이 회문을 이루도록 하는 최대 kk를 구하라. 더 정확히 말해, 문자열 s0,s1,…,sk−1s_0, s_1, \ldots, s_{k-1}이 모든 0≤i<k0 \le i < k에 대해 si=sk−1−is_i = s_{k-1-i}를 만족하면 이들이 회문을 이룬다고 한다.

첫 번째 예시에서 문자열 652526은 6|52|52|6처럼 4개의 조각으로 나눌 수 있고, 이 조각들은 회문을 이룬다. 이 입력을 조각이 회문을 이루도록 하면서 4개보다 더 많은 조각으로 나누는 것은 불가능하다.

입력

  • 길이가 최대 10610^6인 비어 있지 않은 숫자 문자열이 주어진다.

출력

  • 최대 kk 값을 한 줄에 출력한다.

예제4

  1. 예제 1

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

    입력
    12121131221
    
    예상 출력
    7
    
  3. 예제 3

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

    입력
    132594414896459441321
    
    예상 출력
    9