문제링크 : https://www.acmicpc.net/problem/2012
#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으로 선언해주어야 한다.
'백준 > 실버' 카테고리의 다른 글
[백준 19621번] 회의실 배정 2 (C++) (0) | 2024.04.01 |
---|---|
[백준 1059번] 좋은 구간 (C++) (0) | 2024.03.31 |
[백준 16435번] 스네이크버드 (C++) (0) | 2024.03.29 |
[백준 15565번] N과 M (11) (C++) (0) | 2024.03.28 |
[백준 5568번] 카드 놓기 (C++) (0) | 2024.03.27 |