본문 바로가기

백준

[백준/c++] BOJ 11508 - 2+1세일

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

 

11508번: 2+1 세일

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

www.acmicpc.net

 

문제 설명

편의점에서 2+1 세일을 진행한다.

한번의 3개의 유제품을 살 경우에만, 그 중에서 가장 값이 싼 것을 무료로 지불한다.

총 N팩의 유제품을 구입하려고 할 때, 유제품을 모두 살 때 필요한 최소비용을 출력한다.

유제품의 수 N과 각 유제품의 가격 Ci가 주어진다.

N (1 <= N <= 100,000)

Ci (1 <= Ci <= 100,000)

 

해결

N개의 유제품을 세개씩 묶었을 때, 가장 값이 싼 것을 무료로 얻을 수 있다.

무료로 얻는 유제품의 가격이 비싼 것일 수록 이득을 보게 되는데, 따라서 가장 비싼 것부터 정렬하여 순서대로 3개씩 묶어 주면 된다.

 

 

코드

#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;

int n;
vector<int> v;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> n;
	for (int i = 0; i < n; i++) {
		int a;
		cin >> a;
		v.push_back(a);
	}
	
	sort(v.rbegin(), v.rend());
	int ans = 0;
	for (int i = 0; i < n; i+=3) {
		ans += v[i];
		if (i + 1 < n) ans += v[i + 1];
	}
	cout << ans;
}

'백준' 카테고리의 다른 글

[백준/c++] BOJ 16197 - 두 동전  (1) 2023.09.28
[백준/c++] BJO 26215 - 눈 치우기  (0) 2023.09.28
[백준/c++] BOJ 20310 - 타노스  (0) 2023.09.19
[백준/c++] BOJ 12886 - 돌 그룹  (0) 2023.09.19
[백준/c++] BOJ 1946 - 신입사원  (0) 2023.09.19