문제 4178 · 비트 I
완성 표시를 붙이는 날
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
어느 학원에서는 학생이 스스로 복습한 시간을 모아 복습 기록판을 완성하는 활동을 한다. 학생은 매일 수업이 끝난 뒤 그날 복습한 시간을 기록한다. 선생님은 기록을 날짜 순서대로 확인하면서, 첫날부터 지금까지 복습한 시간의 합이 목표 시간 이상이 되면 기록판에 완성 표시를 붙인다. 기록을 시작하기 전에 누적 시간은 0분이다. 첫날의 번호는 1이며, 이후 날짜의 번호는 하루마다 1씩 증가한다. 하루의 복습 시간은 0분일 수도 있다. 복습하지 않은 날도 날짜에 포함되며, 그날에는 누적 시간이 늘어나지 않는다. 앞선 날에 복습한 시간은 다음 날에도 그대로 남는다. 누적 시간을 매일 새로 계산하거나 중간에 0으로 되돌리는 일은 없다. 완성 표시는 하루의 복습 시간을 누적 시간에 더한 직후에만 붙일 수 있다. 누적 시간이 목표 시간과 정확히 같아진 날에도 표시를 붙인다. 목표 시간을 넘어선 경우에는 넘친 시간을 제외하지 않고 그대로 누적한다. 예를 들어 목표 시간이 11분이고 처음 사흘의 복습 시간이 차례로 4분, 2분, 7분이면, 누적 시간은 4분, 6분, 13분이므로 셋째 날에 처음 표시를 붙인다. 기록에는 완성 표시를 붙인 뒤의 날짜도 들어 있을 수 있다. 이후에 복습한 시간이 더 많더라도 처음 표시를 붙인 날짜는 바뀌지 않는다. 따라서 목표를 만족하는 날이 여러 날이면 날짜 번호가 가장 작은 날을 선택한다. 주어진 기록이 끝날 때까지 목표에 도달하지 못할 수도 있다. 기록한 날짜 수 N, 목표 시간 T, 날짜별 복습 시간이 주어진다. 완성 표시를 처음 붙이는 날의 번호를 구한다. 모든 기록을 확인한 뒤에도 표시를 붙일 수 없다면 -1을 구한다.
입력
첫째 줄에 정수 N과 T가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 1,000이며 1 ≤ T ≤ 1,000,000이다. 둘째 줄에 정수 a₁, a₂, …, aₙ이 공백으로 구분되어 주어진다. aᵢ는 i번째 날의 복습 시간을 분 단위로 나타내며, 0 ≤ aᵢ ≤ 1,000이다.
출력
완성 표시를 처음 붙이는 날의 번호를 정수 하나로 출력한다. N일 동안의 누적 시간이 목표 시간에 도달하지 못하면 -1을 출력한다.
예제 입력 1
5 15 3 0 5 7 9
예제 출력 1
4
예제 입력 2
4 12 0 3 3 5
예제 출력 2
-1
예제 입력 3
1 6 8
예제 출력 3
1
힌트 펼치기
- 하루의 복습 시간을 더할 때마다 누적 시간이 목표 이상인지 확인한다.
관련 서재 장
알고리즘 분류
구현반복누적풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |