머리 묶기
시간 제한1초메모리 제한1024 MB
0에서 3 사이의 값이 담긴 배열에서 구간을 골라 그 구간의 XOR 값으로 덮어써 3이 남지 않게 하는 최소 연산 횟수를 구합니다.
문제
시현이는 사람들의 헤어 스타일을 바꾸어 묶는 것을 좋아한다. 헤어 스타일은 (생머리), (포니테일), (양갈래), (세갈래) 중 하나이다.
사람들의 헤어 스타일 이 주어졌을 때, 시현이는 과 을 골라 번째부터 번째 사람의 헤어 스타일을 모두 한꺼번에 로 바꿀 수 있다. 는 비트 단위 XOR 연산자이다.
시현이는 모양이 이상한 세갈래를 싫어해서, 어떤 사람의 헤어 스타일도 세갈래가 되지 않도록 하려고 한다. 헤어 스타일을 바꾸는 최소 횟수를 구해 보자.
입력
입력은 여러 개의 테스트케이스로 이루어져 있다. 첫째 줄에 테스트케이스의 수 가 주어진다. ()
각 테스트케이스의 첫째 줄에 이 주어진다. ()
둘째 줄에 명의 헤어 스타일 이 공백으로 구분되어 주어진다. ()
모든 테스트케이스의 의 합은 을 넘지 않는다.
출력
각 테스트케이스마다 한 줄에, 세갈래가 남지 않도록 할 수 있다면 헤어 스타일을 바꾸는 최소 횟수를 출력한다. 어떻게 바꾸어도 세갈래가 남는다면 을 출력한다.