vitamin3000 2024. 9. 20. 20:10

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

 

 

 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
using namespace std;



int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int n;
	cin >> n;
	vector<int>v;
	for (int i = 0; i < n; i++)
	{
		int num = 0;
		cin >> num;
		v.push_back(num);
	}
	sort(v.begin(), v.end(), greater<>());
	int sum = 0;
	for (int i = 0; i < v.size(); i++)
	{
		if (i % 3 != 2)
		{
			sum += v[i];
		}
	}

	cout << sum;
}

 

최소비용을 구하려면 내림차순 정렬을 한 후에 구하면 된다.

조건 - KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 개의 제품 가격만 지불하면 됩니다. 한 번에 3개의 유제품을 사지 않는다면 할인 없이 정가를 지불해야 합니다.

값 3개씩 묶는다.

(1) 즉 i%3 !=2라면 .. 묶음 중 첫번째 두번째 값이라면 sum에 더해준다

(2) sum출력