Programming/백준
[실버 4] 백준 11508 - 2+1 세일 (파이썬)
pental
2025. 4. 24. 10:58
https://www.acmicpc.net/problem/11508
풀이
- N개의 물건 가격이 주어진다
- 2 + 1세일은 물건을 세개 살때 가장 싼 한개는 무료로 적용한다.
- 이때, 최소 비용으로 구매하는 금액을 구하라
아이디어
- 비싼 순으로 정렬후
- 3개씩 묶어서, 그 중 가장 싼 물건은 빼기
discount = 0
for i in range(0, N, 3) :
if i + 2 < N :
discount += C[i + 2]
3개씩 묶어서 매 세번째 아이템을 할인 대상으로 적용한다.
단, 범위를 벗어나지 않도록 if i + 2 < N 을 체크한다.
print(sum(C) - discount)
전체 가격 합에서 할인액을 뺴서 최종 결제 금액을 출력한다.
코드
# 백준 11508 - 2+1 세일
# 분류 : 그리디
N = int(input())
C = []
for i in range(N) :
C.append(int(input()))
C.sort(reverse=True)
discount = 0
for i in range(0, N, 3) :
if i + 2 < N :
# i, i + 1, i + 2
discount += C[i + 2]
print(sum(C) - discount)