버스 노선 길이
면접 대비시간 제한2초메모리 제한1024 MB
정수 k와 마을 위치를 나타내는 0과 1의 문자열이 주어질 때, 각 마을에서 오른쪽으로 k개의 마을을 지난 마을까지의 거리를 구합니다.
문제
한 나라의 모든 정착지는 길고 곧은 도로를 따라 놓인 마을이다. 도로를 따라 정류장이 총 개 있고, 인접한 두 정류장 사이의 거리는 1킬로미터다. 일부 정류장 옆에는 마을이 있다.
교통부는 마을 사이를 잇는 버스를 운행하기로 했다. 모든 마을에서 노선을 정확히 하나씩 운행한다. 버스는 마을에서 출발해 도로를 따라 오른쪽(정류장 번호가 커지는 방향)으로 이동하다가 마을을 개 더 만나거나 마지막 마을에 도착할 때까지 달린다. 그 뒤 버스는 출발 마을로 돌아온다. 가장 마지막 마을에서 출발하는 버스는 오른쪽에 갈 곳이 없어 0킬로미터를 간다. 이런 버스가 누구에게 필요한지는 이 문제의 범위 밖이다. 각 버스 노선의 길이를 구하라.
입력
첫 번째 줄에 정수 ()가 주어진다. 각 버스가 출발 마을보다 오른쪽에서 방문해야 하는 마을의 수다.
두 번째 줄에 도로를 나타내는 문자열 가 주어진다. 는 '0'과 '1'로만 이루어진다. 번째 문자가 '1'이면 정류장 옆에 마을이 있고, '0'이면 없다. 에는 '1'이 하나 이상 있다. 의 길이는 300000을 넘지 않는다.
출력
에 있는 '1'의 개수를 이라 하자. 이것이 마을의 수다. 마을에 도로를 따라 왼쪽에서 오른쪽으로, 즉 의 앞에서 뒤로 번호를 붙인다. 정확히 개의 정수를 출력한다. 번째 정수는 번 마을에서 출발하는 버스의 노선 길이다.
힌트
첫 번째 예시를 살펴보자.
- 정류장 1의 마을에서 출발한 버스는 정류장 4의 마을까지 간다. 경로에서 두 번째 마을이기 때문이다.
- 정류장 3의 마을에서 출발한 버스는 정류장 6의 마을까지 간다. 경로에서 두 번째 마을이기 때문이다.
- 정류장 4의 마을에서 출발한 버스는 정류장 6의 마을까지 간다. 도로에서 마지막 마을이기 때문이다.
- 정류장 6의 마을에서 출발한 버스는 정류장 6의 마을까지 간다. 도로에서 마지막 마을이기 때문이다.