키베이루's diary

[C++] 백준 2012번 등수 매기기 본문

알고리즘/Greedy

[C++] 백준 2012번 등수 매기기

키베이루 2022. 5. 22. 03:33

1) 문제설명

백준 Online Judge 2012번 등수 매기기

2) 해결방법

 

입력값을 오름차순으로 정렬한 뒤 그 값과 그 값의 인덱스 값을 빼주어 더해주었다.

 

3) 코드

#include<iostream>
#include<queue>
#include<string.h>
#include<math.h>
#include<cmath>
#include<algorithm>

using namespace std;

long long arr[500002];
/*
등수 매기기
해결방안
입력값을 오름차순으로 정렬한 뒤 그 값과 그 값의 인덱스 값을 빼주어 더해주었다.

*/
int main() {
	long long n;
	cin >> n;
	
	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
	}
	sort(arr+1, arr + n+1);
	long long sum = 0;
	for (long long i = 1; i <= n; i++) {		
		if (arr[i] > i) {
			sum = sum + arr[i] - i;
		}
		else {
			sum = sum + i - arr[i];
		}
	
	}
	cout << sum << endl;
}

int형의 범위에서 벗어나기 때문에 변수명을 바꿔주는 것이 좋다.

Comments