만드는 중입니다

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

Dynamic Input Tool

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

요약
빈 문자열에서 시작해 문자 하나를 덧붙이거나 현재 문자열의 비어 있지 않은 부분 수열을 덧붙이는 연산만으로 주어진 문자열을 만들 때 필요한 최소 연산 횟수를 구한다.
난이도

어려움10점 중 8점

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

문제

CodingSlave 1.0은 새로운 텍스트 편집기이다. CodingSlave 1.0에서 문자열을 만들 때 사용할 수 있는 연산은 두 가지이다:

  1. 현재 문자열의 끝에 문자 하나를 추가한다.
  2. 현재 문자열의 비어 있지 않은 부분 수열을 골라 현재 문자열의 끝에 추가한다.

처음에는 현재 문자열이 비어 있다.

영소문자로 이루어진 단어가 주어졌을 때, 이 문자열을 만드는 데 필요한 최소 연산 횟수를 구하라.

입력

첫째 줄에 영소문자로 이루어진 문자열 SS가 주어진다 (1≤∣S∣≤1061 \le |S| \le 10^6).

출력

CodingSlave 1.0으로 SS를 만들기 위해 필요한 최소 연산 횟수를 한 정수로 출력한다.

예제2

  1. 예제 1

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

    입력
    aabaaaabaa
    
    예상 출력
    5