백준/실버
[백준 2012번] 등수 매기기 (C++)
게임개발기원
2024. 3. 30. 14:09
문제링크 : https://www.acmicpc.net/problem/2012
2012번: 등수 매기기
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;
int N, arr[500001];
ll result;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for(int i=1; i<=N; i++) cin >> arr[i];
sort(arr+1, arr+N+1);
for(int i=1; i<=N; i++)
{
result += abs(arr[i]-i); //불만도
}
cout << result;
return 0;
}
정렬 후 배열과 i=1~N까지의 차이값을 구하여 저장해두면 된다.
주의해야 할 것이 차이값을 저장하는 변수의 최대 합이 50만*50만까지 가능하므로 long long으로 선언해주어야 한다.