문제 3186 · 비트 III
우체국의 라벨 두루마리
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 우체국 창구에서는 접수한 소포에 배송 라벨을 붙인다. 라벨은 두루마리 형태로 공급되며, 새 두루마리 하나에는 정확히 K장의 라벨이 들어 있다. 창구가 업무를 시작할 때에는 새 두루마리 하나가 이미 장착되어 있다. 직원은 손님을 입력에 주어진 순서대로 한 명씩 처리한다. 각 손님은 한 개 이상의 소포를 가져오며, 소포 하나에는 라벨 한 장이 필요하다. 이 창구는 한 손님의 소포에 붙이는 라벨을 반드시 하나의 두루마리에서 꺼내야 한다는 작업 규칙을 사용한다. 현재 장착된 두루마리에 남은 라벨 수가 그 손님의 소포 수 이상이면, 교체하지 않고 필요한 수만큼 사용한다. 남은 수와 필요한 수가 정확히 같아도 그대로 사용하므로 처리가 끝난 뒤 남은 라벨은 0장이 될 수 있다. 현재 남은 라벨 수가 필요한 수보다 적으면, 직원은 남아 있는 라벨을 모두 폐기하고 새 두루마리 하나를 장착한다. 그런 다음 새 두루마리에서 그 손님에게 필요한 라벨을 꺼낸다. 모든 손님의 소포 수는 K 이하이므로, 손님 한 명을 처리하기 위해 두루마리를 두 번 이상 교체할 일은 없다. 폐기한 라벨은 이후에 다시 사용하지 않는다. 마지막 손님을 처리한 뒤에는 남은 라벨 수가 0장이더라도 새 두루마리를 미리 장착하지 않는다. 업무 시작 때 장착한 첫 두루마리도 사용한 두루마리 수에 포함한다. 손님이 N명 방문했을 때, 사용한 두루마리의 총수와 마지막 두루마리에 남은 라벨 수를 구한다. 손님을 재배치하거나 여러 손님의 소포를 하나의 접수로 합치는 일은 없다.
입력
첫째 줄에 정수 N과 K가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 1,000, 1 ≤ K ≤ 1,000이다. 둘째 줄에 각 손님의 소포 수를 나타내는 정수 A_1, A_2, …, A_N이 방문 순서대로 주어진다. 1 ≤ A_i ≤ K이다.
출력
사용한 두루마리의 총수와 마지막 두루마리에 남은 라벨 수를 공백으로 구분하여 출력한다.
예제 입력 1
5 7 3 4 2 6 1
예제 출력 1
3 0
예제 입력 2
3 5 1 1 1
예제 출력 2
1 2
예제 입력 3
2 1 1 1
예제 출력 3
2 0
힌트 펼치기
- 손님을 처리하기 직전에 남은 라벨 수가 부족한지 확인한다.
관련 서재 장
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |