[백준] 1214번 쿨한 물건 구매 ★★

거북이·2023년 7월 11일
0

백준[플래티넘5]

목록 보기
4/9
post-thumbnail

💡문제접근

  • P원 지폐와 Q원 지폐 중에서 액면가가 더 높은 지폐를 이용해서 내야 하는 D원 이상의 최소 금액을 구한 다음 P원과 Q원 중 상대적으로 액면가가 높은 지폐의 수를 감소시키면서 액면가가 낲은 지폐의 수를 늘려 D원 이상의 최소 금액을 구했다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

D, P, Q = map(int, input().split())
if P < Q:
    P, Q = Q, P
min_cnt = (D // P + 1)  # 최소 개수 : D원을 P원 지폐로 모두 내는 경우
min_cost = min_cnt * P  # 최소 비용 : P원 지폐를 최소 개수만큼 지불하는 경우
if D % P == 0 or D % Q == 0:
    min_cost = D
else:
    for t in range(min_cnt - 1, -1, -1):
        div, mod = divmod(D - (t * P), Q)
        if mod == 0:
            min_cost = D
            break
        temp = (t * P) + ((div + 1) * Q)
        if temp == min_cost:
            break
        min_cost = min(min_cost, temp)
print(min_cost)

💡소요시간 : 2h

0개의 댓글