문제 3284 · 비트 II
회수 보고가 쌓이면
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
마라톤 대회의 운영팀은 급수 구역에서 사용한 다회용 컵을 회수한다. 회수한 컵은 운반 상자에 담아 세척 장소로 보내며, 상자 하나를 보낼 때마다 그 상자에 담긴 컵의 수를 운영 기록에 보고한다. 대회가 끝난 뒤 운영팀은 보고가 들어온 순서대로 기록을 살펴보며 회수 목표를 언제 달성했는지 확인하려 한다. 보고는 모두 N번 들어왔으며, 보고에는 1번부터 N번까지 순서대로 번호가 붙어 있다. i번 보고에 적힌 정수 A_i는 그 보고에서 새로 회수한 컵의 수다. 앞선 보고에 포함된 컵을 다시 세는 일은 없다. 따라서 i번 보고까지 회수한 컵의 총수는 1번 보고부터 i번 보고까지 적힌 수를 모두 더한 값이다. 회수 작업을 점검하기 위해 빈 상자를 보낸 경우도 있으므로, 보고에 적힌 컵의 수는 0일 수 있다. 컵의 수가 0인 보고에도 다른 보고와 똑같이 번호가 붙는다. 운영팀의 목표는 컵을 K개 이상 회수하는 것이다. 누적 회수량이 K개와 정확히 같아져도 목표를 달성한 것으로 본다. 한 번의 보고로 누적 회수량이 K개를 넘어선 경우에는 그 보고에서 목표를 달성한 것으로 본다. 목표를 달성한 뒤에도 남은 보고는 계속 기록되지만, 처음 목표를 달성한 보고 번호는 바뀌지 않는다. 보고 이전의 누적 회수량은 0개다. 목표를 달성한 보고가 여러 개라면 번호가 가장 작은 보고 하나만 찾는다. 모든 보고를 확인한 뒤에도 누적 회수량이 K개보다 작다면 목표를 달성하지 못한 것이다. 주어진 보고 기록을 이용하여 목표를 처음 달성한 보고 번호를 구하라.
입력
첫째 줄에 정수 N과 K가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 1,000이며, 1 ≤ K ≤ 100,000이다. 둘째 줄에 정수 A_1, A_2, …, A_N이 공백으로 구분되어 주어진다. 모든 i에 대해 0 ≤ A_i ≤ 100이다.
출력
누적 회수량이 처음으로 K개 이상이 된 보고 번호를 정수 하나로 출력한다. 보고 번호는 1부터 시작한다. 목표를 달성하지 못했다면 -1을 출력한다.
예제 입력 1
6 12 3 0 4 5 2 1
예제 출력 1
4
예제 입력 2
4 10 0 2 0 7
예제 출력 2
-1
예제 입력 3
3 6 8 0 4
예제 출력 3
1
힌트 펼치기
- 보고를 순서대로 읽으며 지금까지 회수한 컵의 수를 변수 하나에 누적한다.
- 누적 회수량이 처음으로 K 이상이 되는 순간의 보고 번호를 찾는다.
관련 서재 장
알고리즘 분류
구현반복누적풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |