PS/그리디 알고리즘[Greedy]

백준 1758 알바생(c++)

SeungbeomKim 2022. 7. 17. 16:27

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

<코드>

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

int main()
{
	int n;
	cin>>n;
	vector<int>v;
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		v.push_back(a);
	}
	sort(v.begin(),v.end(),greater<int>());
	long long sum = 0;
	for(int i=0;i<n;i++)
	{
		if(v[i]-((i+1)-1)<0) continue;
		else sum+=(v[i]-((i+1)-1));
	}
	cout<<sum<<'\n';
}

<풀이과정>

구현 방법은 매우 간단하다. 벡터 배열을 내림차순 정렬시켜서 팁의 값 v[i]-((i+1)-1)이 0보다 작으면 넘어가고 그렇지 않으면 다 더해줘서 값을 구해주면 끝이다 !