쓰레기통
면접 대비시간 제한20초메모리 제한1024 MB
쓰레기통이 있는 집을 1로 표시한 문자열이 주어질 때, 각 집에서 가장 가까운 쓰레기통까지의 거리 합을 구한다.
문제
당신이 사는 도시 Kickstartland에는 집 채가 늘어선 유난히 긴 거리가 하나 있다. 이 거리의 길이는 이고, 채의 집이 거리를 따라 일정한 간격으로 놓여 있다. 즉 첫 번째 집은 위치 , 두 번째 집은 위치 에 있는 식이다. 두 집 와 사이의 거리는 이며, 는 의 절댓값을 나타낸다.
이 집들 중 일부는 앞에 쓰레기통이 있다. 그런 집의 주인은 쓰레기를 버리러 나갈 때 걷지 않아도 된다. 반면 앞에 쓰레기통이 없는 집의 주인은 자신의 집에서 왼쪽이나 오른쪽으로 걸어가, 앞에 쓰레기통이 있는 어떤 집에 도달해야 한다.
시간을 아끼기 위해 모든 집 주인은 항상 자신의 집에서 가장 가까운 쓰레기통에 쓰레기를 버린다. 어떤 집에서 가장 가까운 쓰레기통이 둘이라면, 그 집 주인은 둘 중 어느 곳으로든 걸어갈 수 있다.
집의 수 과 어떤 집 앞에 쓰레기통이 있는지에 대한 정보가 주어졌을 때, 각 집 주인이 쓰레기를 버리기 위해 걸어야 하는 거리의 합을 구하라. 적어도 한 집 앞에는 쓰레기통이 있다고 가정해도 된다.
입력
입력의 첫 줄에는 테스트 케이스의 수 가 주어진다. 개의 테스트 케이스가 이어진다. 각 테스트 케이스는 두 줄로 이루어진다.
각 테스트 케이스의 첫 줄에는 거리에 있는 집의 수를 나타내는 정수 이 주어진다.
각 테스트 케이스의 두 번째 줄에는 어떤 집 앞에 쓰레기통이 있는지를 나타내는 길이 의 문자열 가 주어진다. 문자열 의 번째 문자가 이면 번째 집 앞에 쓰레기통이 있다는 뜻이다. 그렇지 않고 이면 번째 집 앞에 쓰레기통이 없다는 뜻이다.
출력
각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. 여기서 는 테스트 케이스 번호(1부터 시작)이고, 는 각 집 주인이 쓰레기를 버리기 위해 걸어야 하는 거리의 합이다.
제한
- .
- 의 길이는 과 같다.
- 의 각 문자는 또는 이다.
- 에는 문자 이 적어도 하나 있다.
힌트
첫 번째 테스트 케이스에서는 모든 집 앞에 쓰레기통이 있으므로, 어떤 집 주인도 쓰레기를 버리러 걷지 않아도 된다.
두 번째 테스트 케이스에서는 첫 번째와 네 번째 집 주인은 집 앞에 쓰레기통이 있으므로 걷지 않아도 된다. 두 번째 집 주인은 첫 번째 집 쪽으로 걸어가며, 거리는 이다. 세 번째, 다섯 번째, 여섯 번째 집 주인은 네 번째 집 쪽으로 걸어가며, 거리는 각각 , , 이다.