문제 4895 · 킬로 III
세탁소 정산 로그
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 세탁소는 여러 접수 단말에서 발생한 결제와 환불을 하나의 일일 로그 파일에 기록한다. 백엔드 운영 담당자는 이 파일을 읽어 단말별 순수납액과 전체 순수납액을 확인하려 한다. 각 단말에는 1 이상 1000 이하의 정수 번호가 붙어 있다. 로그에 한 번도 나타나지 않은 단말은 그날의 비교 대상에서 제외한다. 로그 한 줄은 시각, 단말 번호, 처리 종류, 금액의 네 필드로 이루어진다. 필드 사이에는 세로줄 문자 |가 정확히 하나씩 들어간다. 예를 들어 08:17|23|P|4200은 08시 17분에 23번 단말에서 4200원을 결제받았다는 뜻이다. 처리 종류 P는 결제이며 해당 단말의 순수납액에 금액을 더한다. 처리 종류 R은 환불이며 해당 단말의 순수납액에서 금액을 뺀다. 금액 필드 자체에는 부호가 붙지 않는다. 환불 대상에는 이전 날짜에 받은 결제도 포함될 수 있다. 따라서 현재 파일에 앞선 결제 기록이 없어도 환불 기록은 유효하며, 어떤 단말의 순수납액이나 전체 순수납액이 음수가 될 수도 있다. 결제와 환불을 서로 짝지어 찾을 필요는 없다. 같은 시각에 같은 단말에서 같은 금액을 처리한 기록이 여러 줄 있을 수 있으며, 모양이 완전히 같은 줄도 각각 별개의 거래로 계산한다. 로그는 시각이 빠른 순서대로 주어지고 같은 시각의 기록 순서는 임의다. 시각은 기록을 설명하기 위한 필드이며 정산 금액을 가중하거나 거래를 제외하는 데 사용하지 않는다. 모든 줄은 올바른 형식이고, 누락되거나 잘못 기록된 줄은 없다. 로그에 나타난 모든 단말의 순수납액을 더한 전체 순수납액을 구한다. 또한 로그에 나타난 단말 중 순수납액이 가장 큰 단말 하나를 고른다. 순수납액이 같은 단말이 여러 개라면 번호가 가장 작은 단말을 고른다. 모든 단말의 순수납액이 음수여도 같은 기준을 적용하며, 순수납액이 0인 단말도 로그에 나타났다면 비교 대상에 포함한다.
입력
첫째 줄에 로그 줄 수 N이 주어진다. 다음 N개 줄에 HH:MM|D|T|V 형식의 로그가 주어진다. N, D, V는 정수이며 1 ≤ N ≤ 12,000, 1 ≤ D ≤ 1000, 1 ≤ V ≤ 1,000,000이다. D와 V는 불필요한 선행 0 없이 주어진다. T는 P 또는 R이다. HH는 00부터 23까지, MM은 00부터 59까지이며 각각 정확히 두 자리로 주어진다. 로그의 시각은 감소하지 않는다. 각 로그 줄에는 공백이 없다.
출력
첫째 줄에 전체 순수납액을 정수로 출력한다. 둘째 줄에 선택한 단말 번호와 그 단말의 순수납액을 공백으로 구분하여 출력한다. 음수에는 앞에 마이너스 기호를 붙이고, 0은 0으로 출력한다.
예제 입력 1
6 08:10|1|P|5000 08:12|2|P|7000 08:20|1|P|4000 09:00|2|R|2000 09:00|3|R|1000 09:15|1|R|1000
예제 출력 1
12000 1 8000
예제 입력 2
3 00:00|7|R|300 00:00|2|R|300 23:59|9|R|900
예제 출력 2
-1500 2 -300
예제 입력 3
4 10:05|4|P|800 10:05|4|P|800 10:06|4|R|1600 10:07|1|R|1
예제 출력 3
-1 4 0
힌트 펼치기
- 세로줄 문자로 필드를 나눈 뒤 처리 종류에 따라 금액의 부호를 정한다.
- 순수납액이 0인 단말과 로그에 나타나지 않은 단말을 구별해야 한다.
알고리즘 분류
문자열로그 파싱집계풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |