만드는 중입니다

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

쓰레기통

면접 대비

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

요약
쓰레기통이 있는 집을 1로 표시한 문자열이 주어질 때, 각 집에서 가장 가까운 쓰레기통까지의 거리 합을 구한다.
난이도

보통10점 중 4점

유형
배열, 구현, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

당신이 사는 도시 Kickstartland에는 집 NN채가 늘어선 유난히 긴 거리가 하나 있다. 이 거리의 길이는 NN이고, NN채의 집이 거리를 따라 일정한 간격으로 놓여 있다. 즉 첫 번째 집은 위치 11, 두 번째 집은 위치 22에 있는 식이다. 두 집 ii와 jj 사이의 거리는 ∣i−j∣|i-j|이며, ∣x∣|x|는 xx의 절댓값을 나타낸다.

이 집들 중 일부는 앞에 쓰레기통이 있다. 그런 집의 주인은 쓰레기를 버리러 나갈 때 걷지 않아도 된다. 반면 앞에 쓰레기통이 없는 집의 주인은 자신의 집에서 왼쪽이나 오른쪽으로 걸어가, 앞에 쓰레기통이 있는 어떤 집에 도달해야 한다.

시간을 아끼기 위해 모든 집 주인은 항상 자신의 집에서 가장 가까운 쓰레기통에 쓰레기를 버린다. 어떤 집에서 가장 가까운 쓰레기통이 둘이라면, 그 집 주인은 둘 중 어느 곳으로든 걸어갈 수 있다.

집의 수 NN과 어떤 집 앞에 쓰레기통이 있는지에 대한 정보가 주어졌을 때, 각 집 주인이 쓰레기를 버리기 위해 걸어야 하는 거리의 합을 구하라. 적어도 한 집 앞에는 쓰레기통이 있다고 가정해도 된다.

입력

입력의 첫 줄에는 테스트 케이스의 수 TT가 주어진다. TT개의 테스트 케이스가 이어진다. 각 테스트 케이스는 두 줄로 이루어진다.

각 테스트 케이스의 첫 줄에는 거리에 있는 집의 수를 나타내는 정수 NN이 주어진다.

각 테스트 케이스의 두 번째 줄에는 어떤 집 앞에 쓰레기통이 있는지를 나타내는 길이 NN의 문자열 SS가 주어진다. 문자열 SS의 ii번째 문자가 11이면 ii번째 집 앞에 쓰레기통이 있다는 뜻이다. 그렇지 않고 00이면 ii번째 집 앞에 쓰레기통이 없다는 뜻이다.

출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. 여기서 xx는 테스트 케이스 번호(1부터 시작)이고, yy는 각 집 주인이 쓰레기를 버리기 위해 걸어야 하는 거리의 합이다.

제한

  • 1≤T≤1001 \le T \le 100.
  • SS의 길이는 NN과 같다.
  • SS의 각 문자는 00 또는 11이다.
  • SS에는 문자 11이 적어도 하나 있다.

힌트

첫 번째 테스트 케이스에서는 모든 집 앞에 쓰레기통이 있으므로, 어떤 집 주인도 쓰레기를 버리러 걷지 않아도 된다.

두 번째 테스트 케이스에서는 첫 번째와 네 번째 집 주인은 집 앞에 쓰레기통이 있으므로 걷지 않아도 된다. 두 번째 집 주인은 첫 번째 집 쪽으로 걸어가며, 거리는 11이다. 세 번째, 다섯 번째, 여섯 번째 집 주인은 네 번째 집 쪽으로 걸어가며, 거리는 각각 11, 11, 22이다.

예제1

  1. 예제 1

    입력
    2
    3
    111
    6
    100100
    
    예상 출력
    Case #1: 0
    Case #2: 5