Algorithm PS/Algospot
[Algospot] 이분법 / LOAN / Python 파이썬
migrationArc
2021. 9. 22. 14:40
https://www.algospot.com/judge/problem/read/LOAN#
풀이
대출금의 연 이자를 특정 개월 수로 균등상환 하였을때, 상환 금액을 이분법을 이용하여 구하는 문제이다.
이분법을 시작 할 때, hi 금액은 할부금을 값지 않은 상황인 "원금+이자" 가 된다.
T = int(input())
def checkC(N, M, P, C):
for _ in range(M):
N += (N * P / 12 / 100)
N -= C
return N
for _ in range(T):
N, M, P = input().split()
N = float(N)
M = int(M)
P = float(P)
# 가장 큰 금액 - 원금 + 이자 : 할부금은 한번도 값지 않은 상황
hi = N + (N * P / 12 / 100)
lo = 0
C = (hi+lo) / 2
for _ in range(100):
if checkC(N, M, P, C) < 0:
hi = C
C = (hi+lo) / 2
else:
lo = C
C = (hi+lo) / 2
print(C)