Python으로 구현한 11508번 2+1 세일 문제 풀이입니다.
https://www.acmicpc.net/problem/11508
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 값을 출력한다.
'백준(Python) 풀이 > 그리디 알고리즘' 카테고리의 다른 글
백준(Python) 3135번 라디오 풀이 (0) | 2021.12.19 |
---|---|
백준(Python) 20044번 Project Teams 풀이 (0) | 2021.12.19 |
백준(Python) 1758번 알바생 강호 풀이 (0) | 2021.12.18 |
백준(Python) 2847번 게임을 만든 동준이 풀이 (0) | 2021.12.18 |
백준(Python) 1543번 문서 검색 풀이 (0) | 2021.12.18 |