문제 3768 · 비트 I
영화관 관람 지갑
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
작은 영화관에서는 매일 한 편씩 상영하는 기획전을 연다. 한 관객은 기획전이 열리는 N일 동안 관람 전용 지갑을 사용하기로 했다. 지갑에는 처음에 돈이 없으며, i번째 날 아침에는 그날 준비한 금액 A_i원을 지갑에 넣는다. 전날 쓰고 남은 돈은 사라지지 않고 다음 날에도 그대로 사용할 수 있다. 기획전의 모든 영화표 가격은 P원으로 같다. 관객은 매일 아침 돈을 넣은 직후 지갑의 잔액을 확인한다. 잔액이 P원 이상이면 영화표를 정확히 한 장 구매하고, 지갑에서 P원을 뺀다. 잔액이 P원보다 적으면 그날은 영화표를 구매하지 않는다. 어느 날에도 영화표를 두 장 이상 사지 않으며, 잔액이 표 두 장의 가격보다 많더라도 한 장만 구매한다. 따라서 많은 돈이 남은 날에도 다음 날 사용할 잔액이 생길 수 있다. 영화표를 구매한 날에는 그날 상영하는 영화를 관람한다. 지난 날짜의 영화표를 뒤늦게 구매하거나, 다음 날의 영화표를 미리 구매하는 일은 없다. 돈을 넣은 뒤에는 위 규칙에 따라 구매 여부가 바로 결정되며, 관객이 임의로 구매를 미루거나 건너뛰는 일도 없다. 표를 구매할 때 지갑의 잔액이 정확히 P원이면 구매한 뒤 잔액은 0원이 된다. 각 날짜에 준비한 금액은 서로 다를 수 있고, 0원인 날도 있다. 그날 넣은 돈이 0원이더라도 이전 날짜부터 남아 있던 돈이 충분하면 표를 구매한다. 반대로 여러 날 동안 조금씩 넣은 돈이 모여야 처음으로 표를 살 수도 있다. 모든 날짜의 금액이 주어졌을 때, N일 동안 영화를 관람한 날의 수와 마지막 날의 구매 처리가 끝난 뒤 지갑에 남은 금액을 구한다.
입력
첫째 줄에 기획전이 열리는 날의 수 N과 영화표 가격 P가 주어진다. 1≤N≤1,000, 1≤P≤10,000이다. 둘째 줄에 A_1부터 A_N까지가 공백으로 구분되어 주어진다. 0≤A_i≤10,000이다. 입력의 모든 수는 정수이다.
출력
영화를 관람한 날의 수와 마지막 잔액을 한 줄에 공백으로 구분하여 출력한다. 한 번도 관람하지 못했다면 관람한 날의 수로 0을 출력한다.
예제 입력 1
5 7 3 4 0 15 0
예제 출력 1
3 1
예제 입력 2
4 10 0 2 3 4
예제 출력 2
0 9
예제 입력 3
3 5 15 0 0
예제 출력 3
3 0
힌트 펼치기
- 잔액을 나타내는 변수와 관람한 날의 수를 나타내는 변수를 유지한다.
관련 서재 장
알고리즘 분류
구현반복누적풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |