https://www.acmicpc.net/problem/2012
2012번: 등수 매기기
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.
www.acmicpc.net
실제 등수가 A인데 B로 예상한 만큼 abs(A-B)만큼으로 불만도 수치화.
불만도의 합을 최소로 하는 프로그램을 작성하시오.
import sys
def solve(N, rankings):
rankings = sorted(rankings)
basic = list(range(1,N+1))
ans = 0
for i in range(N):
ans += abs(basic[i]-rankings[i])
return ans
if __name__ == '__main__':
N = int(input())
rankings = []
for i in range(N):
rankings.append(int(sys.stdin.readline()))
ans = solve(N,rankings)
print(ans)
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 3061번: 사다리 (0) | 2021.09.13 |
---|---|
백준 2872번 : 우리집엔 도서관이 있어(그리디) *** (0) | 2021.09.12 |
백준 1448번 : 삼각형 만들기 (그리디)** (0) | 2021.09.12 |
백준 20363번 : 당근 키우기(그리디) (0) | 2021.08.23 |
백준 20937번: 떡국(그리디) (0) | 2021.08.22 |