문제 4204 · 바이트 III
게임 서버의 일일 결제 마감
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
게임 서버의 백엔드 담당자는 하루 동안 발생한 유료 아이템 구매 기록을 모아 계정별 청구 금액을 확정해야 한다. 입력으로 주어지는 기록은 모두 결제가 승인된 구매이며, 취소나 환불은 없다. 한 계정이 여러 번 구매할 수 있고, 서로 다른 계정의 기록이 섞여 있다. 각 기록에는 계정 번호와 할인 전 구매 금액이 적혀 있다. 모든 금액의 단위는 원이다. 청구 금액은 구매 기록마다 따로 계산하지 않고, 같은 계정의 구매 금액을 모두 합친 뒤 계산한다. 한 계정의 할인 전 합계를 S라고 하자. S가 10,000원 미만이면 할인율은 0%, 10,000원 이상 50,000원 미만이면 할인율은 5%, 50,000원 이상이면 할인율은 12%다. 이 할인율은 해당 계정의 합계 전체에 적용하며, 구간별 금액을 나누어 계산하지 않는다. 할인액은 S에 할인율을 곱한 금액에서 원 미만을 버린 정수다. 할인 후 금액은 S에서 할인액을 뺀 값이다. 세금은 할인 후 금액의 7%이며, 원 미만이 생기면 올림하여 정수로 만든다. 최종 청구 금액은 할인 후 금액과 세금의 합이다. 할인액을 계산할 때의 버림과 세금을 계산할 때의 올림은 각 계정에서 한 번씩 수행한다. 따라서 전체 계정의 금액을 먼저 합쳐 할인이나 세금을 계산하면 안 된다. 서버는 마감 결과로 모든 계정의 최종 청구 금액을 더한 총액과, 최종 청구 금액이 가장 큰 계정을 보고해야 한다. 가장 큰 금액을 청구받는 계정이 여러 개라면 계정 번호가 가장 작은 계정을 선택한다. 구매 기록에 등장하지 않은 계정은 비교 대상에서 제외한다. 구매 기록이 하나도 없다면 총액은 0원이며, 보고할 계정 번호와 그 계정의 청구 금액도 모두 0으로 정한다. 주어진 구매 기록을 처리하여 이 마감 결과를 구하는 프로그램을 작성하라.
입력
첫째 줄에 구매 기록의 개수 N이 주어진다. N은 0 이상 20,000 이하의 정수다. 다음 N개 줄에는 계정 번호 A와 할인 전 구매 금액 P가 공백으로 구분되어 주어진다. A는 1 이상 100,000 이하의 정수이고, P는 1 이상 1,000,000 이하의 정수다. 같은 계정 번호가 여러 번 등장할 수 있으며, 기록의 순서는 임의다.
출력
첫째 줄에 모든 계정의 최종 청구 금액을 더한 총액을 정수로 출력한다. 둘째 줄에 선택된 계정 번호와 해당 계정의 최종 청구 금액을 공백으로 구분하여 출력한다. N이 0이면 첫째 줄에 0을, 둘째 줄에 0 0을 출력한다. 금액에는 쉼표나 단위 문자를 붙이지 않는다.
예제 입력 1
6 7 4000 2 25000 7 6000 2 25000 9 9999 7 1
예제 출력 1
67946 2 47080
예제 입력 2
3 8 5000 3 2500 3 2500
예제 출력 2
10700 3 5350
예제 입력 3
0
예제 출력 3
0 0 0
힌트 펼치기
- 계정 번호를 키로 사용하여 할인 전 구매 금액을 합산한다.
- 음이 아닌 정수 x에 대해 x를 100으로 나눈 값을 올림한 결과는 (x + 99) // 100이다.
알고리즘 분류
구현해시수학풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |