https://www.acmicpc.net/problem/2012
<코드>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int>v;
unsigned long long sum=0;
for(int i=0;i<n;i++)
{
int a;
cin>>a;
v.push_back(a);
}
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++){
sum+=abs(i+1-v[i]);
}
cout<<abs(sum)<<'\n';
}
<풀이과정>
각 등수가 중복되지 않으면서 불만도(A-B의 절댓값)의 값이 최소가 되게 하기 위해 v[i]를 정렬시켜주고 정렬시켜준 값을 1에서 v[i]의 값을 차근차근 빼주면서 더해주었습니다.
'PS > 그리디 알고리즘[Greedy]' 카테고리의 다른 글
백준 19941 햄버거 분배 (0) | 2022.07.03 |
---|---|
백준 1449 수리공 항승 (0) | 2022.07.01 |
백준 18310 안테나 (0) | 2022.06.30 |
백준 2812 크게 만들기 (0) | 2022.06.30 |
백준 9009 피보나치 (0) | 2022.06.29 |