코딩테스트/백준
[백준] 11508번 2+1 세일 (C++)
Deff_a
2025. 2. 12. 21:59
문제

이 문제는 제목 그대로 물건을 3개 샀을 때, 해당 묶음에서 가장 싼 제품을 무료로 줄 때, 최소 비용을 출력하는 문제이다.
풀이
최소 비용을 만들기 위해서는 가장 비싼 제품을 무료로 받으면 된다.
가장 비싼 제품을 무료로 받기 위해서는 내림차순 정렬을 이용하여 3개씩 구매하면 무료로 받을 수 있는 가장 비싼 제품들을 고를 수 있다.
#include <bits/stdc++.h>
using namespace std;
bool cmp (int a, int b)
{
return a > b;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++)
{
cin >> v[i];
}
sort(v.begin(), v.end(), cmp);
int count = 0, sum = 0;
for(int i = 0; i < n; i++)
{
if(count < 2)
{
sum += v[i];
count++;
}
else
{
count = 0;
}
}
cout << sum;
return 0;
}