만드는 중입니다

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

도트 매트릭스 프린터

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

요약
SET, NEXT, WRITE 명령으로 문자열을 출력할 때, NEXT가 바로 다음 WRITE만 임시로 덮어쓰는 규칙을 이용해 최소 명령 수를 구하는 문제입니다.
난이도

보통10점 중 6점

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

문제

종수는 아두이노 프로젝트에 쓸 도트 매트릭스 프린터를 샀다. 오랜 구현 끝에 아두이노에서 프린터로 세 가지 명령을 보낼 수 있게 되었다.

  • SET(X): 프린터의 주 메모리에 문자 X를 저장한다.
  • NEXT(X): 프린터의 보조 메모리에 문자 X를 저장한다.
  • WRITE: 주 메모리에 저장된 문자를 인쇄한다. 단, 바로 직전에 실행한 명령이 NEXT라면 보조 메모리에 저장된 문자를 인쇄한다.

예를 들어 AABAA를 출력할 때는 다음 8개의 명령을 사용할 수 있다.

SET(A), WRITE, WRITE, SET(B), WRITE, SET(A), WRITE, WRITE

NEXT를 이용하면 다음 7개의 명령으로도 출력할 수 있다.

SET(A), WRITE, WRITE, NEXT(B), WRITE, WRITE, WRITE

알파벳 대문자로만 이루어진 단어가 주어질 때, 그 단어를 출력하는 데 필요한 명령 수의 최솟값을 구하라.

첫 번째 명령은 반드시 SET이어야 한다.

입력

첫째 줄에 인쇄해야 하는 단어가 주어진다. 단어는 알파벳 대문자로만 이루어져 있으며, 길이는 10,000을 넘지 않는다.

출력

입력으로 주어진 단어를 출력하는 데 필요한 명령 수의 최솟값을 출력한다.

예제3

  1. 예제 1

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

    입력
    IOIX
    
    예상 출력
    7
    
  3. 예제 3

    입력
    BABCBACA
    
    예상 출력
    13