해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
직선 위의 점들의 집합이 주어진다. 각 점에는 색이 지정되어 있다. 점 a의 이웃은 그 점과 a 사이에 다른 점이 없는 점들이다. 각 점에는 이웃이 최대 두 개 있으며, 왼쪽에 하나와 오른쪽에 하나가 있을 수 있다.
이 점들의 집합에 일련의 연산을 수행한다. 한 번의 연산에서는 자신과 색이 다른 이웃 점이 있는 모든 점을 삭제한다. 점들은 동시에 삭제된다. 즉, 먼저 삭제해야 하는 점들을 정한 다음 그 점들을 삭제한다. 그 후 다음 연산을 수행하는 식으로 계속할 수 있다. 어떤 연산으로도 점이 하나도 삭제되지 않는다면 그 연산은 수행할 수 없다.
다음 연산에서 삭제할 점이 하나도 없게 될 때까지 몇 번의 연산을 수행해야 하는가?
입력으로 영문 소문자 'a'-'z'로 이루어진 문자열 하나가 주어진다. 문자들은 점들이 직선 위에 배치된 순서대로 각 점의 색을 나타낸다. 첫 번째 문자는 가장 왼쪽 점의 색을, 두 번째 문자는 왼쪽에서 두 번째 점의 색을 나타내는 식이다.
점의 개수는 1 이상 106 이하이다.
주어진 점들의 집합에서 더 이상 삭제할 점이 없을 때까지 수행할 수 있는 연산의 수를 나타내는 정수 하나를 한 줄에 출력한다.
aabb
2
aabcaa
1
첫 번째 테스트 케이스에서는 첫 번째 연산으로 가운데 점 두 개를 삭제하여 점들 "ab"가 남고, 이 점들은 두 번째 연산으로 삭제된다. 세 번째 연산을 적용할 점은 남아 있지 않는다.
두 번째 테스트 케이스에서는 첫 번째 연산으로 가운데의 점 네 개를 삭제하여 점들 "aa"가 남는다. 어느 점에도 다른 색의 이웃이 없으므로 두 번째 연산은 수행할 수 없다.