문제 3184 · 비트 III
회의실 물병 주문 정산
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
회의실 관리 서비스는 회의에 사용할 물병 주문을 처리한다. 백엔드 담당자는 하루의 주문 기록을 순서대로 읽어 최종 재고와 결제 금액을 계산해야 한다. 하루를 시작할 때 물병은 S개 있으며, 물병 한 개의 판매 가격은 P원이다. 모든 주문에는 필요한 물병 수가 양의 정수로 기록되어 있다. 이 서비스는 한 주문을 전부 제공할 수 있을 때만 승인한다. 주문한 수량이 처리 직전의 재고보다 작거나 같으면 주문을 승인하고, 주문 수량만큼 재고를 줄인다. 이때 주문 수량에 물병 한 개의 가격을 곱한 금액을 총결제 금액에 더한다. 주문 수량과 재고가 정확히 같아도 승인하며, 처리 후 재고는 0개가 된다. 주문한 수량이 처리 직전의 재고보다 많으면 그 주문은 거절한다. 거절한 주문에는 물병을 하나도 제공하지 않고 결제도 하지 않는다. 따라서 거절한 주문을 처리한 뒤에도 재고와 총결제 금액은 모두 그대로다. 주문 수량의 일부만 제공하는 처리는 하지 않는다. 주문은 입력에 나타난 순서대로 한 번씩 처리한다. 앞선 주문을 거절했더라도 다음 주문은 남아 있는 재고를 기준으로 정상적으로 검사한다. 작은 주문을 먼저 처리하도록 순서를 바꾸거나, 거절한 주문을 나중에 다시 처리하지 않는다. 하루 동안 재고가 추가되거나 승인한 주문이 취소되는 일도 없다. 총결제 금액은 하루를 시작할 때 0원이다. 처음부터 재고가 없거나 모든 주문이 거절되면 총결제 금액은 0원으로 남는다. 모든 주문을 처리한 뒤 남은 물병 수와 총결제 금액을 구하는 프로그램을 작성한다. 주문의 승인 여부를 각각 출력할 필요는 없다.
입력
첫째 줄에 주문 수 N, 초기 재고 S, 물병 한 개의 가격 P가 공백으로 구분되어 주어진다. N은 1 이상 1,000 이하, S는 0 이상 1,000 이하, P는 1 이상 10,000 이하의 정수다. 둘째 줄에 주문 순서대로 N개의 주문 수량이 공백으로 구분되어 주어진다. 각 주문 수량은 1 이상 1,000 이하의 정수다.
출력
모든 주문을 처리한 뒤의 재고와 총결제 금액을 이 순서대로 한 줄에 공백으로 구분하여 출력한다. 두 값 모두 정수로 출력한다.
예제 입력 1
4 10 700 6 7 3 1
예제 출력 1
0 7000
예제 입력 2
3 4 250 5 6 7
예제 출력 2
4 0
예제 입력 3
5 8 120 3 6 2 4 1
예제 출력 3
2 720
힌트 펼치기
- 주문을 거절하면 재고를 줄이지 않는다. 다음 주문도 반드시 검사한다.
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |