본문으로 이동
코드패스 by Devin.KR

문제 4645 · 바이트 I

천문대의 구역 분할 기록

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

천문대는 일렬로 나열된 N개의 관측 칸을 조사한다. 각 칸에는 조사할 별이 하나 있거나 없으며, 처음에는 모든 칸을 하나의 구역으로 묶는다. 관측 프로그램은 구역을 재귀적으로 검사하면서 검사 기록을 남긴다. 이때 별이 있는 칸의 위치는 검사 도중 바뀌지 않는다. 어떤 구역을 검사하면 가장 먼저 그 구역에 대한 기록을 정확히 하나 남긴다. 그 구역에 있는 별의 수가 0개 또는 1개라면 추가 작업 없이 해당 구역의 검사를 끝낸다. 별이 2개 이상이면 구역을 연속한 두 구역으로 나눈다. 원래 구역의 칸 수가 L개일 때 왼쪽 구역에는 앞에서부터 ⌊L/2⌋개의 칸을 넣고, 오른쪽 구역에는 나머지 칸을 넣는다. 여기서 ⌊L/2⌋는 L을 2로 나눈 몫이다. 나눈 뒤에는 왼쪽 구역과 오른쪽 구역을 차례로 같은 규칙에 따라 검사한다. 분할하기 전에 남긴 원래 구역의 기록도 전체 기록 수에 포함한다. 분할하여 만들어진 구역에 별이 없더라도 그 구역의 검사를 시작할 때 기록을 하나 남긴다. 반면 별이 하나 이하인 구역은 칸이 여러 개여도 더 나누지 않는다. 따라서 같은 수의 별이 있더라도 별의 배치에 따라 전체 기록 수가 달라질 수 있다. 프로그램은 전체 N개 칸으로 이루어진 구역의 검사부터 시작한다. 모든 재귀 검사가 끝났을 때 남아 있는 기록의 총개수를 구해야 한다. 별이 전혀 없는 관측 칸 배열에서도 최초 구역의 검사는 수행한다. 각 기록은 서로 다른 검사 호출에 대응하며, 기록을 남긴 순서는 출력하지 않는다.

입력

첫째 줄에 칸 수를 나타내는 정수 N이 주어진다. 1 ≤ N ≤ 65,536이다.
둘째 줄에 길이가 정확히 N인 문자열 S가 주어진다. S는 문자 0과 1로만 이루어지며, 왼쪽부터 각 칸에 별이 없으면 0, 별이 있으면 1이다.

출력

모든 검사가 끝났을 때 남긴 기록의 총개수를 정수 하나로 출력한다.

예제 입력 1

8
10100001

예제 출력 1

5

예제 입력 2

5
00000

예제 출력 2

1

예제 입력 3

3
111

예제 출력 3

5
힌트 펼치기
  • 구간에 있는 별의 수를 빠르게 구할 수 있도록 누적 합을 만든다.
  • 각 재귀 호출에서 현재 구역의 기록 하나를 먼저 센다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류재귀누적 합

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)