도트 매트릭스 프린터
시간 제한1초메모리 제한128 MB
SET, NEXT, WRITE 명령으로 문자열을 출력할 때, NEXT가 바로 다음 WRITE만 임시로 덮어쓰는 규칙을 이용해 최소 명령 수를 구하는 문제입니다.
문제
종수는 아두이노 프로젝트에 쓸 도트 매트릭스 프린터를 샀다. 오랜 구현 끝에 아두이노에서 프린터로 세 가지 명령을 보낼 수 있게 되었다.
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을 넘지 않는다.
출력
입력으로 주어진 단어를 출력하는 데 필요한 명령 수의 최솟값을 출력한다.