ABC 문자열
시간 제한1초메모리 제한2048 MB
A, B, C가 같은 개수로 들어 있는 문자열을 부분수열로 나눕니다. 각 부분수열을 연속된 세 글자씩 묶었을 때 모든 묶음에 세 문자가 하나씩 들어가야 하며, 부분수열의 최소 개수를 구합니다.
문제
A, B, C 문자로 이루어진 문자열 가 주어진다. 에는 A, B, C가 각각 같은 개수만큼 들어 있다.
문자열이 아름다운 문자열이려면 다음 두 조건을 모두 만족해야 한다.
- 길이가 의 배수이다.
- 길이 인 연속된 부분 문자열로 빈틈없이 나눌 수 있고, 각 부분 문자열에
A,B,C가 하나씩 순서에 상관없이 들어 있다.
예를 들어 ABCCBA는 아름다운 문자열이지만, ABCAB와 CCBAAB는 아니다.
주어진 문자열을 부분 수열(연속일 필요는 없음)로 나누어, 각 부분 수열이 아름다운 문자열이 되도록 한다. 예를 들어 문자열 ABACBCAACCBB는 다음과 같이 나눌 수 있다.
AB CA C B
ACB A C B
이 경우 부분 수열은 ABCACB와 ACBACB 두 개이며, 둘 다 아름다운 문자열이다. 입력이 제약을 만족하면 이런 분할은 항상 하나 이상 존재한다.
각 부분 수열이 아름다운 문자열이 되도록 나눌 때, 부분 수열의 최소 개수를 구하라.
입력
첫째 줄에 문자열 가 주어진다 (). 는 의 배수이며, 에는 A, B, C가 같은 개수만큼 들어 있다.
출력
를 아름다운 부분 수열들로 나눌 때 필요한 부분 수열의 최소 개수를 한 줄에 출력한다.