문제 4404 · 바이트 III
호텔 정산서의 마지막 한 줄
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 호텔의 백엔드 서버는 하루 동안 체크아웃한 예약들의 정산서를 만든다. 각 예약에는 1박 기본요금, 숙박 일수, 정액 쿠폰 금액이 기록되어 있다. 입력에 등장하는 순서대로 예약 번호를 1번부터 붙인다. 객실 종류나 투숙객 정보는 계산에 영향을 주지 않으며, 서로 다른 예약의 금액을 합쳐서 할인하거나 세금을 계산하지 않는다. 예약 하나의 최종 결제액은 다음 순서로 정한다. 먼저 1박 기본요금에 숙박 일수를 곱하여 기본 숙박료를 구한다. 숙박 일수가 3일 이상이면 기본 숙박료의 10퍼센트를 장기 숙박 할인액으로 정한다. 이때 1원 미만은 버린다. 숙박 일수가 1일 또는 2일이면 장기 숙박 할인액은 0원이다. 기본 숙박료에서 장기 숙박 할인액을 뺀 다음, 정액 쿠폰 금액을 뺀다. 그 결과가 음수이면 0원으로 바꾼다. 이렇게 얻은 금액을 과세 대상 금액이라고 한다. 세금은 과세 대상 금액의 7퍼센트이며, 1원 미만의 금액이 있으면 올림하여 정수 원으로 만든다. 과세 대상 금액이 0원이면 세금도 0원이다. 과세 대상 금액과 세금을 더한 값이 해당 예약의 최종 결제액이다. 쿠폰을 다 사용하지 못하더라도 남은 금액을 다른 예약으로 옮기거나 환급하지 않는다. 정산서의 마지막 줄에는 모든 예약의 최종 결제액 합계와 최종 결제액이 가장 큰 예약 번호를 적는다. 가장 큰 최종 결제액을 가진 예약이 여러 개이면 번호가 가장 작은 예약을 선택한다. 모든 예약의 최종 결제액이 0원이어도 같은 규칙을 적용한다. 주어진 예약 내역으로 이 마지막 줄을 작성하는 프로그램을 작성한다.
입력
첫째 줄에 예약 수 N이 주어진다. 1 ≤ N ≤ 10,000이다. 다음 N개 줄에는 입력 순서대로 1박 기본요금 P, 숙박 일수 L, 정액 쿠폰 금액 C가 공백으로 구분되어 주어진다. 1 ≤ P ≤ 100,000,000, 1 ≤ L ≤ 30, 0 ≤ C ≤ 3,000,000,000이다. 모든 입력값은 정수이며 금액의 단위는 원이다.
출력
모든 예약의 최종 결제액 합계와 선택한 예약 번호를 공백으로 구분하여 한 줄에 출력한다. 합계는 정수로 출력한다.
예제 입력 1
3 100 3 20 200 2 500 99 1 0
예제 출력 1
374 1
예제 입력 2
2 1 1 1 5 3 100
예제 출력 2
0 1
힌트 펼치기
- 세금 계산에 실수를 사용하지 않고 올림 나눗셈을 사용할 수 있다.
알고리즘 분류
구현정수 연산풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |