본문 바로가기
Algorithm

백준 11508번 : 2+1 세일

by jun_code 2022. 1. 2.

<문제>

링크 : https://www.acmicpc.net/problem/11508

 

11508번: 2+1 세일

KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두

www.acmicpc.net

 

출처 :&nbsp;https://www.acmicpc.net/problem/11508


<코드>

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