스파르타 코딩클럽/3주차

최대 할인 적용하기

코딩쪼앙 2022. 3. 24. 19:45

문제

해결방안 

입력받은 배열에 있는 값들을 내림차순으로 정렬하면 가장 비싼 물건에 가장 할인율이 높은 쿠폰을 적용할 수 있으므로 내림차순 정렬한 후 인덱스를 하나씩 증가시키면서 각 가격에 쿠폰을 적용한 후 가격을 더해준다. 

shop_prices = [30000, 2000, 1500000]
user_coupons = [20, 40]


def get_max_discounted_price(prices, coupons):
    prices.sort(reverse=True)
    coupons.sort(reverse=True)

    price_index = 0
    coupon_index = 0
    max_discounted_price = 0
    while coupon_index < len(coupons):
        max_discounted_price += prices[price_index] * (100 - coupons[coupon_index]) / 100
        price_index += 1
        coupon_index += 1

    while price_index < len(prices):
        max_discounted_price += prices[price_index]
        price_index += 1

    return int(max_discounted_price)


print(get_max_discounted_price(shop_prices, user_coupons))  # 926000 이 나와야 합니다.

먼저 쿠폰이 소진될 때 까지 가격에 할인을 적용한 후 각 인덱스를 하나씩 증가시켜준다. 

그 후 쿠폰이 사려는 물건의 수 보다 적은 경우를 대비하여 다시한 번 물건의 가격이 들은 배열이 끝날 때 까지 while문을 돌아 총 가격에 더해준 후 값을 정수형으로 반환한다.

'스파르타 코딩클럽 > 3주차' 카테고리의 다른 글

멜론 베스트 앨범 뽑기  (0) 2022.03.28
올바른 괄호  (0) 2022.03.24
해쉬 활용문제  (0) 2022.03.24
해쉬 구현하기  (0) 2022.03.24
큐 구현하기  (0) 2022.03.24