본문 바로가기

Algorithm/BAEKJOON

[BOJ] 11508번 2+1 세일 (C++)

728x90
반응형

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

 

11508번: 2+1 세일

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

www.acmicpc.net

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n, c;
	cin >> n;
	vector<int> v;
	for(int i = 0; i < n; i++){
		cin >> c;
		v.push_back(c);
	}
	
	sort(v.begin(), v.end(), greater<>());
	
	int sum = 0;
	for(int i = 0; i < n; i++){
		if((i + 1) % 3 == 0) continue;
		sum += v[i];
	}
	
	cout << sum << endl;
	return 0;
}

 

N개의 가격을 벡터에 담고 내림차순으로 정렬하여 3의 배수번째 수를 제외하고 더한다.

 

예를 들어보면 가격이 [2, 3, 4, 5, 6, 7, 8]일 때

[2] [3 4 5] [6 7 8]

위처럼 큰 수부터 3개씩 묶으면 최대한 비싼 것을 무료로 지불하여 최소비용으로 구입할 수 있다.

728x90
반응형