문제 4090 · 비트 I
마감 전 원두 장부
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 카페의 백엔드 담당자는 영업 중에 도착한 기록으로 원두 재고와 판매 금액을 계산하려 한다. 이 카페에서는 한 종류의 음료만 판매하며, 음료 한 잔을 만드는 데 원두 한 단위를 사용한다. 영업 시작 시 원두 재고는 S단위이고, 음료 한 잔의 판매 가격은 P원이다. 판매 가격은 영업 중에 바뀌지 않는다. 기록은 입고와 주문의 두 종류이며, 입력에 주어진 순서대로 처리한다. 종류가 1인 기록의 수량이 Q라면 원두 Q단위가 도착한 것이다. 이때 현재 재고에 Q를 더한다. 종류가 2인 기록의 수량이 Q라면 음료 Q잔을 한꺼번에 주문한 것이다. 현재 재고가 Q 이상이면 주문 전체를 승인하고, 재고에서 Q를 뺀 뒤 판매 금액에 P×Q원을 더한다. 현재 재고가 Q보다 적으면 주문 전체를 거절한다. 거절한 주문은 재고와 판매 금액을 모두 바꾸지 않는다. 주문의 일부만 승인하는 처리는 없다. 거절한 주문은 대기 목록에 들어가지 않으므로, 나중에 원두가 입고되어도 다시 처리하지 않는다. 입고 자체는 판매 금액을 늘리지 않으며, 원두의 구입 비용도 이번 장부에서는 계산하지 않는다. 취소, 환불, 재고 폐기는 발생하지 않는다. 영업 시작 시 판매 금액과 거절한 주문 기록 수는 모두 0이다. 예를 들어 재고가 3일 때 수량 4인 주문은 전부 거절된다. 그다음 원두 2단위가 입고되면 재고는 5가 된다. 앞서 거절한 주문 때문에 이 재고가 줄어들지는 않는다. 거절한 주문 기록 수는 주문한 잔 수가 아니라 거절된 기록의 개수이다. 모든 기록을 처리한 뒤 남은 원두 재고, 누적 판매 금액, 거절한 주문 기록 수를 구한다. 금액에는 소수 부분이 없으며, 재고가 정확히 주문 수량과 같을 때에도 주문을 승인한다.
입력
첫째 줄에 기록 수 N, 처음 원두 재고 S, 음료 한 잔의 가격 P가 공백으로 구분되어 주어진다. 1≤N≤1,000, 0≤S≤1,000, 1≤P≤10,000이다. 다음 N개 줄에는 기록의 종류 T와 수량 Q가 주어진다. T는 1 또는 2이고, 1≤Q≤1,000이다. 모든 입력값은 정수이다.
출력
남은 원두 재고, 누적 판매 금액, 거절한 주문 기록 수를 이 순서대로 한 줄에 공백으로 구분하여 출력한다.
예제 입력 1
5 3 2000 2 4 1 2 2 3 2 2 2 1
예제 출력 1
0 10000 2
예제 입력 2
3 0 1500 2 1 1 5 1 2
예제 출력 2
7 0 1
힌트 펼치기
- 현재 재고, 누적 판매 금액, 거절한 기록 수를 각각 변수 하나로 관리한다.
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |