문제 4215 · 바이트 I
카페 정산 기록 복원
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 카페의 데이터 담당자가 하루 동안 수집된 판매 기록을 정리하고 있다. 기록 하나에는 영수증 번호, 메뉴 코드, 판매 수량, 결제 금액이 들어 있다. 카페에서 사용하는 메뉴 코드는 A, B, C이며, 한 개의 가격은 각각 2, 3, 5다. 가격과 금액의 단위는 모두 동일한 정산 단위다. 하나의 영수증에는 한 종류의 메뉴만 들어가며, 할인이나 추가 요금은 없다. 수집 과정에서 잘못된 기록과 수정 기록이 섞였다. 담당자는 먼저 각 기록이 유효한지 검사한다. 메뉴 코드가 A, B, C 중 하나이고, 판매 수량이 1 이상 9 이하이며, 결제 금액이 해당 메뉴 한 개의 가격에 판매 수량을 곱한 값과 정확히 같을 때만 유효한 기록이다. 입력에는 메뉴 코드 X나 수량 0이 들어올 수도 있으며, 이 경우에는 다른 값과 관계없이 유효하지 않다. 같은 영수증 번호의 기록이 여러 번 들어올 수 있다. 유효한 기록을 만나면 그 영수증에 저장되어 있던 유효한 기록을 현재 기록으로 완전히 교체한다. 이전 기록과 메뉴가 달라도 교체하며, 수량과 금액을 더해서 저장하지 않는다. 유효하지 않은 기록은 그대로 버린다. 특히 잘못된 수정 기록이 나중에 들어와도 이미 저장된 유효한 기록을 지우거나 변경하지 않는다. 모든 기록은 입력 순서대로 처리한다. 입력에 더 나중에 나온 기록이 더 나중에 수집된 기록이며, 별도의 시각이나 우선순위는 없다. 처리가 끝난 뒤 유효한 기록이 저장된 영수증의 개수와 그 영수증들의 결제 금액 합계를 구한다. 한 번도 유효한 기록이 없었던 영수증은 개수와 합계에 포함하지 않는다. 저장된 영수증이 하나도 없다면 두 값 모두 0이다. 이러한 규칙에 따라 최종 정산 결과를 계산하는 프로그램을 작성한다.
입력
첫째 줄에 기록 수 N이 주어진다. N은 1 이상 30,000 이하의 정수다. 다음 N개 줄에는 영수증 번호 R, 메뉴 코드 M, 판매 수량 Q, 결제 금액 P가 공백으로 구분되어 주어진다. R은 1 이상 999 이하의 정수다. M은 A, B, C, X 중 한 글자다. Q는 0 이상 9 이하의 정수이고, P는 0 이상 99 이하의 정수다.
출력
최종적으로 유효한 기록이 저장된 영수증의 개수와 결제 금액 합계를 한 줄에 공백으로 구분하여 출력한다. 저장된 영수증이 없으면 0 0을 출력한다.
예제 입력 1
7 12 A 3 6 8 B 2 6 12 C 2 10 8 B 0 0 19 X 4 8 12 A 4 7 19 A 1 2
예제 출력 1
3 18
예제 입력 2
3 1 X 1 2 2 A 0 0 3 C 2 9
예제 출력 2
0 0
예제 입력 3
3 7 A 1 2 7 B 3 9 7 C 1 5
예제 출력 3
1 5
힌트 펼치기
- 영수증 번호마다 가장 나중에 등장한 유효한 금액을 저장한다.
- 유효하지 않은 기록을 만났을 때 기존 저장값을 변경하지 않는다.
알고리즘 분류
데이터 검증구현배열풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |