백준 20492번 문제 링크
문제 이름 : 세금
주 언어 : Python
태그 : 수학 / 사칙연산
solved.ac 등급 : Bronze V (2022/11/30 확인)
문제 보기
문제 :
선린인터넷고등학교의 한 학생은 프로그래밍 대회에 참가하여 거액의 상금을 수상하는 영광을 누리게 되었다. 하지만, 이 학생이 상금 금액의 전부를 수령하게 되는 것은 아니다. 상금의 일부를 제세공과금으로 납부하고, 나머지 금액을 수령하게 된다.
일반적으로, 대회에서 상금을 받으면 전체 금액의 22%를 제세공과금으로 국가에 납부하고, 나머지 금액을 수령하게 된다. 하지만, 상금의 80%를 필요 경비로 인정하게 되면, 나머지 20% 중 22%만을 제세공과금으로 납부해도 된다.
대회 상금의 금액이 주어질 때, 다음 두 경우 각각에 대해 이 학생이 실제로 수령하는 금액을 구해보자.
1. 전체 상금의 22%를 제세공과금으로 납부하는 경우
2. 상금의 80%를 필요 경비로 인정받고, 나머지 금액 중 22%만을 제세공과금으로 납부하는 경우
입력 :
상금의 금액을 나타내는 하나의 정수 $N$이 주어진다.
$1 \, 000 \leq N \leq 10 \, 000 \, 000$
$N$은 $1 \, 000$의 배수
출력 :
1번 경우에 대한 답과 2번 경우에 대한 답을 사이에 공백을 두고 출력한다.
1번 경우인 "전체 상금의 22%를 제세공과금으로 납부하는 경우"에는 $N - N \times \frac{22}{100} = N \times \frac{78}{100}$만큼의 상금을 받을 수 있는 셈이고,
2번 경우인 "전체 상금의 80%를 필요 경비로 인정받고, 나머지 금액 20% 중 22%를 제세공과금으로 납부하는 경우"에는 1번 케이스 세금의 $\frac{1}{5}$만 내면 되는 셈입니다. (80%인 $\frac{4}{5}$의 세금을 면제 받으므로)
따라서 $N - N \times \frac{22}{100} \times \frac{1}{5} = N \times \frac{478}{500}$만큼의 상금을 받을 수 있는 셈입니다.
크게 다음과 같은 단계를 거칩니다.
1. 정수 $N$을 입력받는다.
2. $N \times \frac{78}{100}$, $N \times \frac{478}{500}$을 나란히 출력한다.
$N$에다가 $0.78$을 곱하는 식으로 했다가는 온전히 정수형으로 출력되지 않고 $780.0$ 같은 형식으로 뜰 것이므로, $78$을 곱하고 $100$으로 나눠주든, $100$으로 나눠주고 $78$을 곱해주는 식으로 해주도록 합니다.
이 문제 뿐만 아니라 입력도 정수형이고 출력도 정수형이면 최대한 중간 과정도 정수형으로 계산되게끔 해야합니다.
파이썬이 아닌 다른 언어에서는 $N$에다가 $478$을 곱하는 과정에서 int형 범위를 넘을 가능성이 있으니, $500$을 나누고 $478$을 곱해주는 방식을 추천드립니다. ($10\,000\,000 \times 478 > 2^{31}$)
$N$이 $1\,000$의 배수라는 것이 보장되어 있으므로, $N$을 바로 $100$으로, $500$으로 나누어 줘도 됩니다.
파이썬에서 정수 나눗셈은 /이 아닌 // 임을 유의해줍니다.
$\frac{78}{100} = \frac{780}{1000}$, $\frac{478}{500} = \frac{956}{1000}$이므로 위와 같이 한꺼번에 처리해주었습니다.
-번째 푼 문제 (2022/--/--)