백준(Python) 풀이/그리디 알고리즘

백준(Python) 11508번 2+1 세일 풀이

개발윗미 2021. 12. 18. 15:44

Python으로 구현한 11508번 2+1 세일 문제 풀이입니다.

 

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

 

11508번: 2+1 세일

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

www.acmicpc.net


n = int(input())
data = []

for _ in range(n) :
  data.append(int(input()))

data.sort(reverse=True)
result = 0
count = 1

for i in data :
  if count % 3 != 0 :
    result += i
    count += 1
  else :
    count += 1

print(result)

 

1. 최소비용을 구해야하므로, 최대한 비싼 가격을 무료로 받기 위해 입력받은 값들을 내림차순으로 정렬한다.

 

2. 리스트 내 요소를 하나씩 세기 위해 count를 1로 초기화하고, 반복문 내에서 count값을 3으로 나눈 값을 확인한다.

 

3. 3으로 나눈 값이 0이 아닐 경우 현재 확인하고 있는 요소 값을 result에 누적한 뒤 count를 1 증가시킨다.

 

4. 그렇지 않을 경우 단순히 count를 1 증가시킨다.

 

5. 리스트 요소를 모두 확인한 후 최종적으로 result 값을 출력한다.