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

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

슈퍼펠린드롬 만들기

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

요약
소문자 문자열이 주어질 때 길이가 같고 사전 순으로 뒤에 오는 슈퍼팰린드롬 중 가장 앞선 문자열을 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 재귀, 그리디
정답자
아직 제출이 없습니다

문제

펠린드롬은 앞에서 읽으나 뒤에서 읽으나 같은 문자열이다. 예를 들어 madam은 앞으로 읽어도 madam이고 뒤로 읽어도 madam이므로 펠린드롬이다. 펠린드롬 중에서도 슈퍼펠린드롬이라는 것이 있는데, 슈퍼펠린드롬은 다음과 같이 재귀적으로 정의한다.

  1. 슈퍼펠린드롬은 모두 펠린드롬이어야 한다.
  2. 길이가 1인 문자열은 모두 슈퍼펠린드롬이다.
  3. 길이가 짝수인 경우 문자열을 절반으로 쪼갰을 때, 앞의 절반과 뒤의 절반이 모두 슈퍼펠린드롬이어야 한다.
  4. 길이가 홀수인 경우 가장 가운데 문자를 빼고 절반으로 쪼갰을 때, 앞의 절반과 뒤의 절반이 모두 슈퍼펠린드롬이어야 한다.

예를 들어 aa는 앞의 절반과 뒤의 절반이 모두 문자열 a이고 길이가 1이므로 슈퍼펠린드롬이다. 같은 이유로 aaaa와 aabaa도 슈퍼펠린드롬이다. aabaa는 가운데 b를 빼고 절반으로 쪼개면 앞의 절반과 뒤의 절반이 모두 aa이다.

알파벳 소문자로 이루어진 문자열이 주어진다. 알파벳 소문자로 이루어지고, 주어진 문자열과 길이가 같으며, 사전순으로 주어진 문자열보다 뒤에 오는 슈퍼펠린드롬 중에서 사전순으로 가장 앞선 것을 구하라.

입력

첫째 줄에 알파벳 소문자로 이루어진 문자열이 하나 주어진다. 이 문자열의 길이는 2 이상 100,000 이하이고, 이 문자열은 슈퍼펠린드롬이 아니다.

출력

첫째 줄에 답을 출력한다. 알파벳 소문자로 이루어지고, 입력으로 주어진 문자열과 길이가 같으며, 사전순으로 입력 문자열보다 뒤에 오는 슈퍼펠린드롬 중에서 사전순으로 가장 앞선 것이다. 입력 문자열은 슈퍼펠린드롬이 아니므로 z로만 이루어진 문자열일 수 없고, 따라서 답은 항상 존재한다.

예제3

  1. 예제 1

    입력
    abaaca
    
    예상 출력
    acaaca
    
  2. 예제 2

    입력
    ab
    
    예상 출력
    bb
    
  3. 예제 3

    입력
    zy
    
    예상 출력
    zz