minhui study
백준 11508번 2+1세일(Python, C++) 본문
https://www.acmicpc.net/problem/11508
입력 받은 가격들 중 가장 비싼 것들부터 3개씩 묶었을 때 가장 저렴한 가격이 나오므로 내림차순으로 가격을 정렬했을 때 인덱스에서 3을 나누었을 때 나머지가 2인 것들만 가격에 포함시키지 않으면 된다.
<python>
from sys import stdin
n=int(input())
m=list(map(int, stdin.read().split()))
m.sort(reverse=True)
cost = 0
for i in range(n):
if(i%3!=2):
cost += m[i]
print(cost)
<C++>
#include <iostream>
#include <algorithm>
using namespace std;
bool desc(int a, int b) {
return a > b;
}
int main() {
int n;
int cost = 0;
cin >> n;
int *c = new int[n];
for (int i = 0; i < n; i++) {
cin >> c[i];
}
sort(c, c + n, desc);
for (int j = 0; j < n; j++) {
if (j % 3 == 2) {
continue;
}
cost += c[j];
}
cout << cost;
}
'백준 문제풀이 > 그리디 알고리즘' 카테고리의 다른 글
백준 9009번 피보나치(Python, C++) (1) | 2020.08.22 |
---|---|
백준 11297번 통나무 건너뛰기(Python, C++) (1) | 2020.08.20 |
백준 14916번 거스름돈(Python, C++) (0) | 2020.08.20 |
백준 14720번 우유축제(Python, C++) (0) | 2020.08.20 |
백준 10162번 전자레인지(Python, C++) (0) | 2020.08.19 |
Comments