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

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

문자열 늘이기

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

요약
길이 200 이하의 소문자 문자열이 주어질 때 반복 삽입으로 이를 만들 수 있는 가장 짧은 조각을 구하며 동점인 경우 사전 순으로 가장 앞선 조각을 출력합니다.
난이도

보통10점 중 7점

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

문제

문자열 pp로 새 문자열 ss를 다음처럼 만든다. 빈 문자열에서 시작해 pp를 넣는다. 그다음 지금 문자열에서 맨 앞과 맨 뒤를 포함한 아무 위치나 골라 그 자리에 pp를 한 번 더 넣는다. 이 과정은 원하는 만큼 되풀이할 수 있다.

pp가 hello인 경우를 보자. 빈 문자열에서 시작하면 문자열이 다음처럼 자랄 수 있다. 각 단계에서 새로 넣은 pp는 굵게 표시했다.

  1. (빈 문자열)
  2. hello
  3. hhelloello
  4. hhelloelhellolo
  5. hhehellolloelhellolo

hello를 네 번 넣었고, 마지막 문자열은 hhehellolloelhellolo이다.

완성된 문자열 ss가 주어진다. ss를 만들어 낼 수 있는 가장 짧은 문자열 pp를 구하라. 길이가 같은 pp가 여러 개면 사전순으로 가장 앞서는 것을 구하라.

입력

첫째 줄에 문자열 ss가 주어진다. ss는 알파벳 소문자로만 이루어지고, 길이는 1 이상 200 이하이다.

출력

첫째 줄에 ss를 만들어 낼 수 있는 가장 짧은 문자열 pp를 출력한다. 그런 pp가 여러 개면 사전순으로 가장 앞서는 것을 출력한다.

예제3

  1. 예제 1

    입력
    hhehellolloelhellolo
    
    예상 출력
    hello
    
  2. 예제 2

    입력
    a
    
    예상 출력
    a
    
  3. 예제 3

    입력
    aabaabaa
    
    예상 출력
    aaba