본문으로 이동
코드패스 by Devin.KR

문제 4255 · 바이트 IV

게임 서버 한정 상품 정산

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 게임 서버는 행사 기간에 사용할 한정 상품 상점을 열었다. 상점에서 판매하는 상품 종류는 정확히 열 가지이며, 각 상품에는 A부터 J까지 서로 다른 코드가 붙어 있다. 같은 코드의 상품은 모두 같은 가격으로 판매한다. 백엔드 담당자는 상점이 열린 직후의 재고와 상품별 단가, 이후 서버에 도착한 주문 기록을 받아 최종 정산 결과를 계산해야 한다. 주문 하나는 상품 코드 한 글자와 구매 수량 한 자리 숫자를 이어 붙인 두 글자 문자열이다. 예를 들어 C4는 C 상품 네 개를 구매하려는 주문이다. 수량은 항상 1부터 9까지의 정수이며, 한 주문에는 한 종류의 상품만 들어 있다. 입력에 나타나는 각 기록은 별개의 주문이다. 문자열이 같은 주문이 여러 번 나타나더라도 중복 기록으로 제거하지 않고 각각 처리한다. 서버는 주문을 입력에 주어진 순서대로 처리한다. 주문한 상품의 현재 재고가 구매 수량 이상이면 주문 전체를 승인한다. 이때 해당 상품의 재고에서 구매 수량을 빼고, 상품 단가와 구매 수량을 곱한 금액을 누적 매출에 더한다. 현재 재고가 구매 수량보다 적으면 주문 전체를 거절한다. 거절한 주문에서는 재고를 줄이지 않으며 매출도 발생하지 않는다. 남은 수량만 일부 판매하는 처리는 하지 않는다. 모든 구매자는 결제에 필요한 게임 화폐를 충분히 가지고 있다. 세금, 수수료, 할인, 취소, 환불은 없으며 주문 처리 도중 재고가 추가되지도 않는다. 따라서 정산에 영향을 주는 요소는 처음 재고, 상품별 단가, 주문의 도착 순서뿐이다. 승인된 주문 수는 판매한 상품 개수와 구별하여 센다. 모든 주문을 처리한 뒤 승인 수, 거절 수, 누적 매출과 상품별 남은 재고를 구한다. 승인된 주문이 하나도 없으면 승인 수와 누적 매출은 모두 0이다.

입력

첫째 줄에 주문 수를 나타내는 정수 N이 주어진다. 1 ≤ N ≤ 100,000이다.
둘째 줄에 A부터 J까지의 처음 재고를 나타내는 정수 10개가 공백으로 주어진다. 각 재고는 0 이상 1,000,000,000 이하이다.
셋째 줄에 A부터 J까지의 단가를 나타내는 정수 10개가 공백으로 주어진다. 각 단가는 1 이상 1,000,000,000 이하이다.
다음 N개의 줄에 주문 문자열이 하나씩 주어진다. 문자열은 정확히 두 글자이며 첫 글자는 A부터 J 중 하나, 둘째 글자는 1부터 9 중 하나이다. 모든 금액의 단위는 게임 화폐 1개다.

출력

첫째 줄에 승인된 주문 수, 거절된 주문 수, 누적 매출을 공백으로 구분하여 정수로 출력한다. 둘째 줄에 A부터 J까지의 남은 재고 10개를 공백으로 구분하여 출력한다. 거절된 주문만 있으면 누적 매출은 0이다.

예제 입력 1

6
3 1 0 0 0 0 0 0 0 2
10 20 30 40 50 60 70 80 90 100
A2
B2
J1
A2
B1
J1

예제 출력 1

4 2 240
1 0 0 0 0 0 0 0 0 0

예제 입력 2

3
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
A1
A1
J9

예제 출력 2

0 3 0
0 0 0 0 0 0 0 0 0 0
힌트 펼치기
  • 상품 코드를 0부터 9까지의 배열 인덱스로 바꾼다.
  • 재고가 충분한지 먼저 확인한 뒤 승인된 주문에 대해서만 재고와 매출을 갱신한다.

출처: Devin.KR 자체 제작

알고리즘 분류구현배열정산

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)