알고리즘/BOJ

백준 2012번 등수 매기기

꾸준함. 2019. 10. 22. 11:09

문제 링크입니다: https://www.acmicpc.net/problem/2012

 

2012번: 등수 매기기

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

www.acmicpc.net

그리디하게 접근하면 되는 문제였습니다.

N이 최대 500,000이기 때문에 결과의 자료형은 long long으로 해줘야하는 것이 핵심이였습니다.

예상 등수를 오름차순으로 정렬한 후 순서대로 등수를 부여하면서 차이를 더해나가면 되는 문제였습니다.

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<int> v;
for (int i = 0; i < N; i++)
{
int num;
cin >> num;
v.push_back(num);
}
sort(v.begin(), v.end());
long long result = 0;
for (int i = 1; i <= N; i++)
{
result += abs(i - v[i - 1]);
}
cout << result << "\n";
return 0;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 10867번 중복 빼고 정렬하기  (0) 2019.10.22
백준 16120번 PPAP  (0) 2019.10.22
백준 2457번 공주님의 정원  (0) 2019.10.22
백준 3036번 링  (0) 2019.10.21
백준 15736번 청기 백기  (0) 2019.10.21