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

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

pqbd

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

요약
소문자 문자열이 주어질 때, 알파벳 대칭 관계를 이용해 거울 대칭 또는 점 대칭을 이루는 가장 긴 연속 부분 문자열의 길이를 구한다.
난이도

보통10점 중 7점

유형
문자열, 투 포인터, 구현, 문자열 매칭
정답자
아직 제출이 없습니다

문제

천재적인 수학적 재능을 타고난 7살 철수의 영어 교육을 위해 철수의 어머니는 알파벳 소문자 모양 장난감 블럭을 구입하였다. 하지만 철수는 영어 공부보단 알파벳의 생김새에 대한 기하학적 고찰에 더 관심이 있다.

철수는 알파벳 블럭을 가지고 놀던 중 서로 모양이 거울 대칭 또는 점 대칭을 이루는 몇 가지 알파벳들을 발견하였다. 대표적으로 알파벳 p, q, b, d간의 관계를 들 수 있다. p와 q는 서로 거울 대칭이고, p와 d는 서로 점 대칭이다. b와 d는 서로 거울 대칭이고, b와 q는 서로 점 대칭이다. 알파벳 u와 n의 경우 또한 서로 점 대칭을 이룬다. 또한 i, m, v, w과 같은 알파벳은 그 자체로 거울 대칭이고, s, z는 그 자체로 점 대칭이다. l, o, x는 점 대칭이자 거울 대칭인 알파벳이다. 그리고 그 외의 대칭 관계는 존재하지 않는다.

이렇게 서로 대칭인 알파벳 사이의 관계를 활용하면 가운데를 기점으로 서로 거울 대칭 또는 점 대칭을 이루는 단어를 만들 수 있다. 예를 들어 bbdd, ppqq, ddbb, bwwd 등은 거울 대칭을, bbqq, ppdd, ddpp, boq, bsq는 점 대칭을 이루는 단어이다. 이러한 대칭 단어에 호기심이 생긴 철수는 알파벳 블럭으로 문자열을 만들고, 이중에서 가장 긴 부분 대칭 단어를 찾으려고 한다. 부분 대칭 단어는 점 대칭 또는 거울 대칭을 이루는 연속된 부분 문자열을 의미한다.

가령, 나열된 문자열이 abboqqppoddk 일 경우, 이 문자열의 부분 대칭 단어 목록은 아래와 같다.

  • 거울 대칭: 'o', 'qp', 'qqpp', 'oqqppo', 'boqqppod', 'bboqqppodd'
  • 점 대칭: 'o', 'boq', 'bboqq', 'pod', 'ppodd'

이중 가장 긴 부분 대칭 단어인 bboqqppodd 가 가장 긴 부분 대칭 단어가 된다.

나열된 알파벳 블럭 문자열의 정보가 주어질 때, 가장 긴 부분 대칭 단어의 길이를 구하는 프로그램을 구현하시오.

입력

첫 번째 줄에 길이가 NN이고 소문자 알파벳으로 구성된 문자열이 주어진다. (3≤N≤500,000)(3 ≤ N ≤ 500\\,000)

출력

첫 번째 줄에 입력에 주어진 문자열의 가장 긴 부분 대칭 단어의 길이를 출력한다.

부분 대칭 단어가 존재하지 않을 경우, NOANSWER를 출력한다.

예제4

  1. 예제 1

    입력
    aaapqbdcksppddxbboqqppodd
    
    예상 출력
    10
    
  2. 예제 2

    입력
    dujifhocsswndug
    
    예상 출력
    2
    
  3. 예제 3

    입력
    nnddkpudya
    
    예상 출력
    NOANSWER
    
  4. 예제 4

    입력
    wow
    
    예상 출력
    3