문제

해결방안
입력받은 배열에 있는 값들을 내림차순으로 정렬하면 가장 비싼 물건에 가장 할인율이 높은 쿠폰을 적용할 수 있으므로 내림차순 정렬한 후 인덱스를 하나씩 증가시키면서 각 가격에 쿠폰을 적용한 후 가격을 더해준다.
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문을 돌아 총 가격에 더해준 후 값을 정수형으로 반환한다.