아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

스위치 배열

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

요약
제한된 토글 규칙으로 주어진 비트열을 모두 0으로 만드는 최소 횟수를 각 테스트 케이스마다 구합니다.
난이도

보통10점 중 7점

유형
재귀, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

새로운 잠금 장치가 개발되었다.

이 장치는 열린 상태와 닫힌 상태를 갖는 스위치 s1,s2,…,sNs_1, s_2, \ldots, s_N으로 이루어지고, 각 스위치의 상태는 0 또는 1이다. 따라서 장치의 상태는 0과 1로 이루어진 길이 NN의 스위치 배열로 나타낸다.

다음 표는 스위치가 8개인 배열의 예다.

스위치s1s_1s2s_2s3s_3s4s_4s5s_5s6s_6s7s_7s8s_8
상태01101100

스위치 NN개로 이루어진 배열에서 스위치를 작동시키는 규칙은 다음과 같다.

  • 규칙 1) sNs_N은 아무 때나 토글해서 상태를 바꿀 수 있다.
  • 규칙 2) si+1s_{i+1}이 1이고 si+2,si+3,…,sN−1,sNs_{i+2}, s_{i+3}, \ldots, s_{N-1}, s_N이 모두 0이면 sis_i를 토글해서 상태를 바꿀 수 있다. 이 규칙은 si+2,si+3,…,sN−1,sNs_{i+2}, s_{i+3}, \ldots, s_{N-1}, s_N에 해당하는 스위치가 아예 없을 때도 적용된다. 예를 들어 sN−1s_{N-1}은 sNs_N이 1이기만 하면 토글할 수 있다.
  • 규칙 3) 한 번에 스위치 하나만 토글할 수 있다.

모든 스위치의 상태가 0이면 장치가 열린다.

위 규칙에 따라 주어진 배열을 모두 0으로 바꾸는 최소 토글 횟수를 구하라.

아래 표는 배열 1111을 0000으로 바꾸는 가장 짧은 과정이다. 1111은 최소 10번의 토글로 0000이 된다.

토글 횟수s1s_1s2s_2s3s_3s4s_4
01111
11101
21100
30100
40101
50111
60110
70010
80011
90001
100000

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

이어서 각 테스트 케이스마다 비트열 BB가 한 줄에 주어진다. BB의 첫 비트가 s1s_1이고 마지막 비트가 sNs_N이다.

BB의 길이는 2≤∣B∣≤312 \le |B| \le 31을 만족한다.

출력

각 테스트 케이스마다 모든 스위치를 0으로 만드는 최소 토글 횟수를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    5
    1111
    11111
    1010101010
    000
    000000010
    
    예상 출력
    10
    21
    819
    0
    3
    
  2. 예제 2

    입력
    4
    00
    01
    10
    11
    
    예상 출력
    0
    1
    3
    2
    
  3. 예제 3

    입력
    3
    00
    0000000000
    0000000000000000000000000000000
    
    예상 출력
    0
    0
    0
    
  4. 예제 4

    입력
    8
    10000000
    01000000
    00100000
    00010000
    00001000
    00000100
    00000010
    00000001
    
    예상 출력
    255
    127
    63
    31
    15
    7
    3
    1