<문제>
링크 : https://www.acmicpc.net/problem/11508
11508번: 2+1 세일
KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두
www.acmicpc.net
<코드>
N = int(input())
price = []
for i in range(0,N):
x = int(input())
price.append(x)
pay = 0
price.sort()
while len(price) >= 3:
x1 = int(price.pop())
x2 = int(price.pop())
x3 = int(price.pop())
pay = pay + x1 + x2
for i in range(0, len(price)):
pay = pay + int(price[i])
print(pay)
<풀이>
제품의 가격에 따라 내림차순으로 정렬하여 3개씩 묶어 행사 할인을 받는다. 묶인 세개 중에서 높은 두 가격을 합한 가격으로 세 개의 제품을 구매한다. 이때, 높은 가격끼리 묶이지 않는다면 다음 계산에서 높은 가격이 총 가격에 포함되므로 최소 비용이 되지 못한다. 따라서, 정렬에 따라 가격이 높은 제품부터 3개씩 묶어 계산하고 묶이지 않는 나머지의 경우 따로 총 가격에 더해준다.
제품 가격을 list형식으로 값을 넣고 pop을 통해 처리된 제품을 제거하는 방식을 택한다.
'Algorithm' 카테고리의 다른 글
백준 20115번 : 에너지 드링크 (0) | 2022.01.05 |
---|---|
백준 1931번 : 회의실 배정 (0) | 2022.01.05 |
백준 1463번 : 1로 만들기 (0) | 2022.01.05 |
백준 11726번 : 2×n 타일링 (0) | 2022.01.05 |
백준 1758번 : 알바생 강호 (0) | 2022.01.02 |