좋은 문자열 만들기
시간 제한2초메모리 제한1024 MB
이진 문자열의 문자를 뒤집어 모든 0을 덮는 최소 구간과 모든 1을 덮는 최소 구간의 길이가 같아지게 하는 최소 비용을 구합니다.
문제
과 로 이루어진 길이 의 이진 문자열 이 주어진다. 비용 을 들여 문자 하나를 다른 문자로 바꿀 수 있다.
좋은 이진 문자열은 다음 조건을 모두 만족하는 문자열이다.
- 과 을 적어도 하나씩 포함한다.
- 을 포함하는 구간의 최소 길이는 을 포함하는 구간의 최소 길이와 같다. 구간 [, ]가 를 포함한다는 것은 인 모든 에 대해 가 성립한다는 뜻이다. (, , ) 구간 [, ]의 길이는 로 정의한다.
주어진 문자열을 좋은 이진 문자열로 만드는 데 필요한 최소 비용을 구한다.
입력
첫째 줄에 테스트케이스의 개수 가 주어진다. ()
각 테스트케이스는 다음과 같이 구성된다.
첫째 줄에 이진 문자열의 길이 이 주어진다. ()
다음 줄에 과 로 이루어진 길이 의 문자열이 주어진다.
모든 테스트케이스에 대해 의 합이 이하임이 보장된다.
출력
각 테스트케이스에 대해 주어진 문자열을 좋은 이진 문자열로 만들 수 없으면 을 출력한다. 만들 수 있으면 좋은 이진 문자열로 만들기 위한 최소 비용을 출력한다.