문제 3690 · 비트 II
쇼핑몰 정산 로그 한 묶음
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
온라인 쇼핑몰의 운영 담당자는 정산 서비스가 남긴 로그 한 묶음을 확인하고 있다. 로그에는 결제 승인, 환불 완료, 상품 조회가 섞여 있다. 담당자는 이 묶음에서 결제가 몇 번 승인되었는지와 정산 금액이 얼마나 변했는지를 알고 싶다. 각 로그는 종류를 나타내는 영문 대문자 문자열과 금액을 나타내는 정수로 구성된다. 종류가 PAY이면 결제 승인 로그이며, 승인 횟수를 1 늘리고 해당 금액을 정산 금액에 더한다. 종류가 REFUND이면 환불 완료 로그이며, 해당 금액을 정산 금액에서 뺀다. 종류가 VIEW이면 상품 조회 로그이며, 승인 횟수와 정산 금액을 모두 바꾸지 않는다. VIEW의 금액은 항상 0이다. 집계를 시작할 때 승인 횟수와 정산 금액은 모두 0이다. PAY와 REFUND의 금액은 원 단위의 양의 정수다. 같은 종류와 같은 금액이 여러 번 등장하더라도 각각 별개의 로그이므로 모두 반영한다. REFUND는 이전에 승인된 결제를 찾아 취소하라는 명령이 아니라, 이미 완료된 환불의 금액을 기록한 것이다. 이 로그 묶음은 전체 운영 기록 중 일부이므로, 다른 묶음에서 승인된 결제의 환불이 들어 있을 수도 있다. 따라서 PAY 없이 REFUND만 등장할 수 있고, 최종 정산 금액이 음수가 되어도 올바른 결과다. 상품 조회만 있으면 승인 횟수와 정산 금액은 모두 0이다. 주어진 모든 로그를 한 번씩 반영한 뒤 승인 횟수와 최종 정산 금액을 구한다.
입력
첫째 줄에 로그의 개수 N이 주어진다. N은 1 이상 1,000 이하의 정수다. 다음 N개 줄에는 종류 C와 금액 A가 공백으로 구분되어 주어진다. C는 PAY, REFUND, VIEW 중 하나다. C가 PAY 또는 REFUND이면 A는 1 이상 1,000,000 이하의 정수이고, C가 VIEW이면 A는 0이다.
출력
결제 승인 횟수와 최종 정산 금액을 이 순서대로 공백 하나로 구분하여 한 줄에 출력한다. 금액은 원 단위 정수로 출력하며, 음수이면 앞에 마이너스 기호를 붙인다.
예제 입력 1
5 PAY 4200 VIEW 0 REFUND 1700 PAY 800 VIEW 0
예제 출력 1
2 3300
예제 입력 2
3 REFUND 900 VIEW 0 REFUND 100
예제 출력 2
0 -1000
예제 입력 3
1 VIEW 0
예제 출력 3
0 0
힌트 펼치기
- 로그 종류에 따라 승인 횟수와 정산 금액을 각각 갱신한다.
알고리즘 분류
로그 파싱구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |