문제 3866 · 바이트 IV
공연별 정산 CSV
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
공연장의 데이터 담당자는 여러 판매 창구에서 전달한 거래 내역을 합쳐 공연별 정산표를 만든다. 전달받은 파일은 쉼표로 열을 구분하는 CSV 형식이다. 각 행에는 공연 번호, 거래 구분, 금액이 이 순서로 들어 있다. 공연 번호가 같으면 같은 공연의 거래이며, 같은 공연의 행이 파일 안에서 연속해서 나타난다는 보장은 없다. 모든 행은 각각 독립된 거래이므로 내용이 완전히 같은 행이 여러 번 나와도 모두 계산해야 한다. 거래 구분 S는 판매를 뜻하고 R은 환불을 뜻한다. 공연의 순정산액은 그 공연에 대한 모든 S 행의 금액을 더한 뒤 모든 R 행의 금액을 뺀 값이다. 환불은 이전 파일에서 처리한 판매에 대한 것일 수도 있으므로, 이번 파일만으로 계산한 순정산액이 음수가 되는 경우도 올바른 입력이다. 거래가 나타나지 않은 공연을 별도로 만들어 정산표에 넣지는 않는다. 이번 정산표에는 순정산액이 양수인 공연만 넣는다. 순정산액이 0이거나 음수인 공연은 제외한다. 포함된 공연은 순정산액이 큰 순서로 나열하고, 순정산액이 같으면 공연 번호가 작은 공연을 먼저 나열한다. 공연 번호는 문자열의 사전 순서가 아니라 정수의 크기로 비교한다. 파일에는 열 이름을 적은 머리글이 없다. 쉼표 앞뒤에 공백이 없으며 따옴표나 빈 필드도 없다. 공연 번호와 금액은 선행하는 0 없이 적힌 양의 정수다. 출력은 CSV가 아닌 공백으로 구분한 정산표다. 정산표에 들어갈 공연의 수를 먼저 출력하고, 정해진 순서대로 공연 번호와 순정산액을 출력한다. 포함할 공연이 하나도 없으면 공연 수인 0만 출력한다.
입력
첫째 줄에 거래 행의 수 N이 주어진다. N은 1 이상 20,000 이하의 정수다. 다음 N개 줄에는 공연번호,거래구분,금액 형식의 행이 주어진다. 공연 번호는 1 이상 999 이하의 정수이고, 거래 구분은 대문자 S 또는 R이다. 금액은 1 이상 9,999 이하의 정수다. 각 행에는 쉼표가 정확히 두 개 있으며 공백은 없다.
출력
첫째 줄에 순정산액이 양수인 공연의 수 K를 출력한다. 다음 K개 줄에 공연 번호와 순정산액을 공백으로 구분하여 출력한다. 순정산액의 내림차순으로 출력하고, 동점이면 공연 번호의 오름차순으로 출력한다. K가 0이면 첫째 줄만 출력한다.
예제 입력 1
6 12,S,500 7,S,900 12,R,100 7,R,500 2,S,400 9,R,20
예제 출력 1
3 2 400 7 400 12 400
예제 입력 2
3 3,S,10 3,R,10 8,R,1
예제 출력 2
0
힌트 펼치기
- 공연 번호별로 판매 금액을 더하고 환불 금액을 뺀다.
- 양수인 결과만 골라 순정산액의 내림차순, 공연 번호의 오름차순으로 정렬한다.
알고리즘 분류
문자열집계정렬풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |