https://www.acmicpc.net/problem/2012
2012번: 등수 매기기
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.
www.acmicpc.net
import sys
N = int(sys.stdin.readline())
R = []
for _ in range(N):
R.append(int(sys.stdin.readline()))
R.sort()
ans = 0
for i in range(1, N + 1):
ans += abs(i - R[i - 1])
print(ans)
간단하게 생각하면 될 문제인데, 첫단추를 잘못끼워서 그런지 많이 헤맸다.
1. 받은 등수를 모두 정렬한다.
2. 1 부터 N 등까지 순회하며 차이나는 등수의 절댓값을 구해 누적한다.