만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

도시 점령

시간 제한1초메모리 제한1024 MB

요약
일렬로 늘어선 도시 중 일부가 점령된 상태에서, 점령된 도시가 매 라운드 인접한 빈 도시를 하나씩 점령할 때 모든 도시를 점령하는 최소 라운드 수를 구합니다.
난이도

보통10점 중 7점

유형
문자열, 이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

JB는 게임을 하고 있다. 게임에는 nn개의 도시가 있으며, 번호는 1,2,⋯ ,n1, 2, \cdots, n이다. ii번 도시와 jj번 도시는 i=j−1i = j - 1 또는 i=j+1i = j + 1일 때만 인접한다. 처음에 일부 도시는 JB가 차지하고 있다.

게임은 라운드 단위로 진행된다. 라운드가 시작될 때 점령된 각 도시는 인접한 미점령 도시 중 최대 하나를 공격 대상으로 표시할 수 있다. 라운드가 끝나면 표시된 공격 대상이 모두 점령된다. 모든 도시가 점령되면 게임이 끝난다.

JB는 최소한의 라운드로 모든 도시를 점령하려고 한다. 그를 도와줄 수 있겠는가?

입력

테스트 케이스는 여러 개 주어진다. 첫 줄에는 테스트 케이스의 수를 나타내는 양의 정수 TT가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에는 도시의 수 nn (1≤n≤1061 \le n \le 10^6)이 주어진다.

다음 줄에는 길이가 nn인 문자열 ss가 주어진다. ss는 '0'과 '1'로만 이루어져 있다. ss의 ii번째 문자는 ii번 도시의 처음 상태를 나타낸다. sis_i가 '1'이면 ii번 도시는 처음에 JB가 점령하고 있고, 그렇지 않으면 점령하고 있지 않다.

모든 테스트 케이스의 nn을 합한 값은 10610^6을 넘지 않는다. ss에는 '1'이 적어도 하나 있다.

출력

각 테스트 케이스마다 모든 도시를 점령하는 데 필요한 최소 라운드 수를 한 줄에 출력한다.

힌트

두 번째 테스트 케이스에서는 0100→0110→11110100 \rightarrow 0110 \rightarrow 1111 순서로 점령하는 것이 가장 좋다.

예제1

  1. 예제 1

    입력
    5
    3
    010
    4
    0100
    7
    0001000
    5
    11111
    6
    010101
    
    예상 출력
    2
    2
    4
    0
    1