윤진이는 이번에 카우버거 알바생으로 뽑히게 되었다. 그녀는 카우버거를 평소에 이용하면서 들었던 의문점 한가지가 있었다.
윤진 : "카우버거🍔에는 왜 세트 메뉴에 대한 할인이 존재하지 않는가?"
따라서 윤진이의 아이디어로 카우버거에 세트 할인을 도입하고자 한다. 세트 메뉴는 버거 1개, 사이드 메뉴 1개, 음료 1개를 선택 할 경우 각각의 제품에 대해서 10%의 세트 할인을 적용하는 방식으로 진행된다.
하지만 카우버거 점주는 POS기의 소프트웨어가 오래되어 세트 할인에 대한 내용을 추가할 수가 없었다. 따라서 소프트웨어학부에 재학 중인 윤진이는 전공을 살려 직접 프로그램을 만들어보려고 한다. 윤진이를 도와 POS기에 들어갈 세트 할인에 대한 프로그램을 작성해보자.
3 3 2
2000 3000 2500
800 1300 1000
500 1000
12100
11170
주어진 버거🍔와 사이드 메뉴🍟, 음료🥤를 가지고 최대한 할인을 받을 수 있는 가격을 찾는 문제입니다.
가장 많은 할인을 받으려면 다음과 같은 사항을 만족시켜야 합니다.
위 두 사항을 만족시키는 코드로 문제를 해결하였습니다!
import sys
input = sys.stdin.readline
b, s, d = map(int, input().split())
set_num = min(b, s, d)
total = 0
discount = 0
for _ in range(3):
prices = sorted(list(map(int, input().split())), reverse=True)
total += sum(prices)
discount += sum(prices[:set_num])
print(total, total - int(discount * 0.1))
b, s, d : 버거, 사이드 메뉴, 음료의 각 개수set_num : 만들 수 있는 세트의 개수total : 할인을 받지 않은 원래 가격discount : 할인 가격세트는 버거와 사이드 메뉴, 음료가 모두 하나씩 구성되어 있어야 합니다. 따라서 가장 많은 세트를 만들기 위해서는 세개 중 가장 적은 개수를 가지고 있는 메뉴를 전부 사용해서 세트를 만들어야 합니다.
그렇기 때문에 min(b, s, d)로 세트의 개수를 정합니다.
그리고, 각 메뉴들에 대해서 가격을 입력받습니다.
입력받은 가격으로 세트 할인이 적용되기 전 가격과 할인의 총액을 계산합니다.
이 때, 가장 많은 할인을 받기 위해서 가격이 높은 순서대로 정렬을 하고, 앞에서부터 세트의 개수만큼만 할인을 받을 수 있도록 합니다.