728x90
Overview
- 체감 난이도: ★★☆☆☆
- 문제 레벨: 실버 3
- 문제 유형: 수학, 브루트포스
- 풀이 상태: 답안참고 / 스스로 해결
- 추후: 다시 풀어보기 / 간단 복습 / 완벽 이해
[문제]
1달러 = 100센트
4.30 => 4달러 30센트
5.00 => 5달러 or 500센트
구매한 N개의 물건의 가격과 부가세를 포함한 총액
i번째 물건의 가격 = P|i| (부가세를 포함하지 않은 가격)
최종 결제 금액 X: 물건 가격 총합 + 부가세(물건 가격 총합의 F% )
(F는 음이 아닌 정수)
X의 소숫점 아래 센트 단위 숫자들 안 보임 -> 달러 단위의 결제 금액만 알 수 있다.
N, X, P 가 주어진다.
F의 최솟값, 최댓값을 구해야 한다.
F로 부가세를 계산했을 때, 소숫점 셋째자리가 나오면 올림/버림을 할 수 있다.
(올림/버림 했을 때 달러 단위가 X랑 같으면 F는 부가세 비율이 될 수 있음)
입력
테스트 케이스 개수; T
N개의 물건, 물건 총합 달러 X
N줄에 걸쳐 P|i|
[코드]
import sys, math
input = sys.stdin.readline
def surtax(X, P_sum):
minF, maxF = None, None
for F in range(10001):
tax = P_sum * F / 100
lower_tax = math.floor(tax * 100) / 100 # 버림
upper_tax = math.ceil(tax * 100) / 100 # 올림
lower_X = P_sum + lower_tax
upper_X = P_sum + upper_tax
if math.floor(lower_X) == X or math.floor(upper_X) == X:
if minF is None: # None 일 경우, 제일 처음 가능한 F를 minF로 설정
minF = F
maxF = F
return minF, maxF
T = int(input())
for _ in range(T):
N, X = map(int, input().split())
P = [float(input()) for _ in range(N)]
P_sum = sum(P)
minF, maxF = surtax(X, P_sum)
print(minF, maxF)
반응형
'🚩 Coding Test > Baekjoon' 카테고리의 다른 글
[BOJ][Python] 3071 The ♡ System (0) | 2025.01.16 |
---|---|
[BOJ][Python] 25179 배스킨라빈스~N~귀엽고~깜찍하게~ (0) | 2025.01.15 |
[BOJ][Python] 3054 피터팬 프레임 (0) | 2025.01.13 |
[BOJ][Python] 20312 CPU 벤치마킹 (0) | 2025.01.10 |
[BOJ][Python] 4963 섬의 개수 (0) | 2024.12.05 |