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

백준 2012 등수매기기

SeungbeomKim 2022. 6. 30. 18:41

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

 

2012번: 등수 매기기

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.

www.acmicpc.net

<코드>

#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