알고리즘 정복하기!/백준 문제풀이

백준 15720번 Python / Greedy

by seokii 2022. 1. 30.
728x90
반응형

문제 링크

https://www.acmicpc.net/problem/15720

 

15720번: 카우버거

첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진

www.acmicpc.net

 

풀이

b,c,d = map(int, input().split())

burgers = sorted(list(map(int, input().split())), reverse=True)
sidemenus = sorted(list(map(int, input().split())), reverse=True)
drinks = sorted(list(map(int,input().split())), reverse=True)

beforeDiscount = sum(burgers) + sum(sidemenus) + sum(drinks)
print(beforeDiscount)

min_num = min(b,c,d)
cost = 0

for _ in range(min_num):
    cost += (burgers[0]+sidemenus[0]+drinks[0]) * 0.9
    burgers.pop(0)
    sidemenus.pop(0)
    drinks.pop(0)

noDiscount = sum(burgers) + sum(sidemenus) + sum(drinks)
totalCost = cost + noDiscount
print(int(totalCost))

- 각각 메뉴의 가격을 받을 때 내림차순으로 정렬하여 할인할 수 있는 세트의 수만큼 반복을 통해 할인을 적용했습니다.

- 할인을 적용한 항목들은 리스트에서 제거한 후, 할인 없이 계산할 항목들은 세트 할인 적용 후 전부 더했습니다.

- 마지막으로 전부 더하여 할인 후 가격을 계산했습니다.

 

 

728x90
반응형

'알고리즘 정복하기! > 백준 문제풀이' 카테고리의 다른 글

백준 10818번 Python / Math  (0) 2022.02.08
백준 2577번 Python / Math  (0) 2022.02.08
백준 11034번 Python / Greedy  (0) 2022.01.30
백준 2810번 Python / Greedy  (0) 2022.01.30
백준 1052번 Python / Greedy  (0) 2022.01.27

댓글