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보다 작으면 넘어가고 그렇지 않으면 다 더해줘서 값을 구해주면 끝이다 !
'PS > 그리디 알고리즘[Greedy]' 카테고리의 다른 글
백준 13975 파일 합치기 3(c++) (0) | 2022.07.19 |
---|---|
백준 4889 안정적인 문자열(c++) (0) | 2022.07.17 |
백준 13164 행복 유치원(c++) (1) | 2022.07.11 |
백준 19941 햄버거 분배 (0) | 2022.07.03 |
백준 1449 수리공 항승 (0) | 2022.07.01 |