minhui study

백준 11508번 2+1세일(Python, C++) 본문

백준 문제풀이/그리디 알고리즘

백준 11508번 2+1세일(Python, C++)

minhui 2020. 8. 20. 02:16

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

 

11508번: 2+1 세일

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

www.acmicpc.net

입력 받은 가격들 중 가장 비싼 것들부터 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;
}

 

 

 

Comments