첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.
출력
첫째 줄에 불만도의 합을 최소로 할 때, 그 불만도를 출력한다.
입력 예시
5
1
5
3
1
2
출력 예시
3
풀이
어렵게 생각하면 어렵고, 쉽게 생각하면 쉬운 문제.
그리디하게 생각해보면, 1등은 1등에 가깝게, 꼴등은 꼴등에 가깝게, n등은 n등에 가깝게 실제 등수를 반영하면 된다. 즉 예측 등수를 기준으로 오름차순 정렬 후, 각 등수와 실제 등수의 차이를 더하면 최소가 된다.
풀이 코드
import sys
input = sys.stdin.readline
N = int(input())
num_list = [int(input()) for _ in range(N)]
num_list.sort()
answer = 0
for i in range(N) :
answer += abs(i+1 - num_list[i])
print(answer)