본문으로 이동
코드패스 by Devin.KR

문제 3978 · 바이트 III

카페 결제 서버의 하루 마감

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 카페의 백엔드 개발자는 결제 서버에 하루 마감 기능을 추가하고 있다. 서버에는 완료된 주문 N건이 저장되어 있으며, 각 주문은 같은 단가의 상품을 여러 개 구매한 기록이다. 주문마다 상품 한 개의 단가 P원, 수량 Q개, 회원 여부 M, 정액 쿠폰 금액 K원이 주어진다. 모든 금액은 원 단위 정수이며, 상품 단가에는 세금이 포함되어 있지 않다. 한 주문의 계산은 정해진 순서로 진행한다. 먼저 단가와 수량을 곱한 상품 금액 B를 구한다. 주문자가 회원이고 B가 20,000원 이상이면 B의 10퍼센트를 회원 할인액으로 정한다. 이때 1원 미만의 부분은 버린다. 회원이 아니거나 상품 금액이 기준보다 작으면 회원 할인액은 0원이다. 할인 조건의 기준은 쿠폰을 사용하기 전의 상품 금액 B다. 다음으로 상품 금액에서 회원 할인액을 뺀 뒤 정액 쿠폰을 적용한다. 쿠폰은 이때 남은 금액까지만 사용할 수 있다. 따라서 실제 쿠폰 사용액은 K와 남은 금액 중 작은 값이다. 사용하지 못한 쿠폰 금액은 다른 주문으로 옮기지 않는다. 회원 할인액과 실제 쿠폰 사용액의 합을 해당 주문의 총 할인액으로 정의한다. 두 할인을 적용하고 남은 금액을 과세 금액으로 삼는다. 세금은 과세 금액의 10퍼센트이며, 여기에서도 1원 미만의 부분을 버린다. 최종 결제액은 과세 금액과 세금을 더한 값이다. 세금은 반드시 주문마다 따로 계산한 뒤 합산해야 한다. 모든 주문의 과세 금액을 먼저 합쳐 세금을 한 번에 계산해서는 안 된다. 마감 기능은 N건의 최종 결제액 합계, 총 할인액 합계, 세금 합계를 보고해야 한다. 같은 상품이나 같은 회원의 주문이 반복되어도 각 주문을 독립적으로 계산한다. 쿠폰이 남은 상품 금액을 모두 덮는 주문은 과세 금액, 세금, 최종 결제액이 모두 0원이다. 출력에는 통화 기호나 자릿수 구분 기호를 넣지 않는다.

입력

첫째 줄에 주문 수인 정수 N이 주어진다. 1 ≤ N ≤ 15,000이다.
다음 N개 줄에 각 주문의 정수 P, Q, M, K가 공백으로 주어진다. 1 ≤ P ≤ 99,999, 1 ≤ Q ≤ 9, M은 0 또는 1, 0 ≤ K ≤ 99,999이다. M이 1이면 회원이고 0이면 비회원이다. 회원 여부와 관계없이 쿠폰을 사용할 수 있다.

출력

모든 주문의 최종 결제액 합계, 총 할인액 합계, 세금 합계를 이 순서대로 한 줄에 공백으로 구분하여 출력한다. 세 값은 모두 원 단위 정수로 출력한다.

예제 입력 1

3
10000 3 1 2000
4500 2 1 1000
7000 1 0 9000

예제 출력 1

36300 13000 3300

예제 입력 2

2
19999 1 1 0
20001 1 1 0

예제 출력 2

41799 2000 3799
힌트 펼치기
  • 회원 할인, 쿠폰, 세금의 적용 순서를 그대로 구현한다.
  • 10퍼센트의 소수 부분을 버리는 계산은 정수 나눗셈으로 처리할 수 있다.

출처: Devin.KR 자체 제작

알고리즘 분류구현정수 연산집계

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)