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

문제 4752 · 킬로 V

배달 알림을 묶는 구간

댓글 0
인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms측정하지 않음0000.00%

문제

한 배달 앱은 가게에 도착한 주문을 접수 순서대로 기록한다. 각 주문에는 가게 화면에 표시할 상세 알림이 있으며, 주문마다 상세 알림이 차지하는 용량이 정해져 있다. 앱 개발자는 화면을 잠시 확인하는 직원이 한 번에 살펴볼 주문 묶음을 만들려고 한다. 주문 묶음에는 접수 기록에서 연속한 주문들만 넣을 수 있다. 접수 기록에는 주문이 1번부터 N번까지 차례대로 놓여 있다. 주문 묶음을 만들려면 시작 번호 L과 끝 번호 R을 정하고, L번부터 R번까지의 모든 주문을 포함해야 한다. 여기서 1 ≤ L ≤ R ≤ N이다. 구간 중간에 있는 주문을 빼거나, 서로 떨어진 여러 구간을 합치는 일은 허용되지 않는다. 선택한 주문의 순서를 바꾸는 일도 없다. 직원이 사용하는 화면은 상세 알림의 총용량이 B 이하인 묶음만 한 번에 표시할 수 있다. 묶음의 총용량은 포함된 주문들의 알림 용량을 모두 더한 값이다. 총용량이 B와 정확히 같아도 표시할 수 있다. 알림을 압축하거나 일부 내용만 표시하는 기능은 없으므로, 주문 하나를 포함할 때는 그 주문의 용량 전체를 더해야 한다. 개발자는 이 조건을 지키면서 한 번에 표시할 수 있는 주문 수를 최대한 크게 하려 한다. 주문 금액이나 배달 거리는 고려하지 않고, 묶음에 포함된 주문 개수만 비교한다. 같은 최대 개수를 가지는 구간이 여러 개라면 어느 구간을 선택하는지는 중요하지 않다. 시작 번호와 끝 번호도 출력할 필요가 없다. 모든 주문의 알림 용량은 양의 정수다. 어떤 주문의 용량이 B보다 클 수도 있으며, 그런 주문을 포함하는 묶음은 표시할 수 없다. 주문 하나만 포함하는 묶음도 허용된다. 표시할 수 있는 비어 있지 않은 묶음이 하나도 없다면 최대 주문 수를 0으로 정한다. 주어진 접수 기록과 화면의 용량 제한을 이용하여, 한 번에 표시할 수 있는 연속한 주문 수의 최댓값을 구하는 프로그램을 작성한다.

입력

첫째 줄에 주문 수 N과 화면의 용량 제한 B가 공백으로 구분되어 주어진다. N은 1 이상 100,000 이하의 정수이고, B는 0 이상 1,000,000,000 이하의 정수다.
둘째 줄에 접수 순서대로 각 주문의 알림 용량 A_1, A_2, …, A_N이 공백으로 구분되어 주어진다. 각 A_i는 1 이상 1,000,000 이하의 정수다.

출력

알림 용량의 합이 B 이하인 연속 구간에 포함되는 주문 수의 최댓값을 정수 하나로 출력한다. 조건을 만족하는 비어 있지 않은 구간이 없으면 0을 출력한다.

예제 입력 1

8 10
4 2 3 6 1 2 4 2

예제 출력 1

4

예제 입력 2

4 3
4 7 5 9

예제 출력 2

0

예제 입력 3

5 5
1 1 1 1 1

예제 출력 3

5
힌트 펼치기
  • 구간의 오른쪽 끝을 한 칸씩 늘린다. 합이 제한을 넘으면 조건을 만족할 때까지 왼쪽 끝을 줄인다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류투 포인터슬라이딩 윈도

풀이 작성

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

JavaScript 시간 제한 = 문제 시간 제한 × 1 + 0초. 문제별 예외는 아래 표에 반영됩니다.

Node.js 전체 API는 지원하지 않습니다.

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

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

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

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

    이 브라우저의 연습 기록

      댓글 0

      로그인하면 댓글을 쓸 수 있습니다.

      댓글 접기·펼치기

      언어별 제한

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

      언어엔진(버전)시간 제한메모리
      JavaScript브라우저 JavaScript1000ms / 테스트측정하지 않음
      TypeScriptTypeScript 5.9.31000ms / 테스트측정하지 않음
      Python 3Pyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음
      CYoWASP Clang 222000ms / 테스트측정하지 않음
      C++YoWASP Clang 22 / libc++2000ms / 테스트측정하지 않음
      JavaOpenJDK javac + TeaVM (Java 21 문법)3000ms / 테스트측정하지 않음
      LuaWasmoon 1.16.0 / Lua 5.43000ms / 테스트측정하지 않음
      RubyRuby 3.4 / ruby.wasm 2.10.15000ms / 테스트측정하지 않음
      SchemeBiwaScheme 0.8.35000ms / 테스트측정하지 않음
      PrologSWI-Prolog / swipl-wasm 8.2.55000ms / 테스트측정하지 않음
      PerlPerl 5.28 / WebPerl 0.09-beta5000ms / 테스트측정하지 않음