만드는 중입니다

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

준회문

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

요약
문자열 S의 부분 문자열 중 가장 긴 세미 팰린드롬을 찾아 출력하는 문제입니다. 각 절반도 세미 팰린드롬이어야 합니다.
난이도

보통10점 중 6점

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

문제

티몬과 품바가 새로운 놀이를 생각해냈다. 이번에는 특별한 종류의 문자열을 모으기로 했다. 다른 사람들이 이미 만든 문자열에는 싫증이 나서, 그들은 준회문을 만들어냈다.

문자열 X[1..n]X[1..n]은 다음 조건을 모두 만족하면 준회문이다.

  • 길이가 1 이하인 문자열은 모두 준회문이다.
  • X[1..⌊n/2⌋]X[1..\lfloor n/2 \rfloor]은 준회문이다.
  • X[n−⌊n/2⌋..n]X[n-\lfloor n/2 \rfloor..n]은 준회문이다.
  • X1=X[1..⌈n/2⌉]X_1 = X[1..\lceil n/2 \rceil], X2=XR[1..⌈n/2⌉]X_2 = X^R[1..\lceil n/2 \rceil]라고 하자. 문자 X1[i]X_1[i]은 문자 X2[i]X_2[i]와 짝을 이룬다. 이때 X1X_1의 같은 문자는 X2X_2의 같은 문자와 짝을 이루어야 하고, 그 반대도 성립해야 한다.

X[i..j]X[i..j]는 XX의 ii번째부터 jj번째까지 부분 문자열을 뜻한다. XRX^R은 XX를 뒤집은 문자열이다. ⌈a⌉\lceil a\rceil은 aa를 올림한 값, ⌊a⌋\lfloor a\rfloor은 aa를 내림한 값이다.

품바는 긴 문자열 SS를 가지고 있다. 티몬은 SS의 부분 문자열 중 준회문이면서 가장 긴 것을 찾고 싶어 한다. 도와달라.

입력

첫 줄에 문자열의 길이 nn (1≤n≤30001 \le n \le 3000)이 주어진다. 둘째 줄에는 길이가 nn이고 소문자 영어 알파벳으로만 이루어진 문자열 SS가 주어진다.

출력

SS의 부분 문자열 중 준회문이면서 길이가 가장 긴 것 TT를 첫 줄에 출력한다. 그런 부분 문자열이 여러 개라면 그중 아무것이나 출력해도 된다.

예제2

  1. 예제 1

    입력
    7
    aaacaba
    
    예상 출력
    acaba
    
  2. 예제 2

    입력
    9
    aabbaccaa
    
    예상 출력
    aabbaccaa