https://www.acmicpc.net/problem/2012
코드
import sys
input = sys.stdin.readline
n = int(input())
ranks = sorted(list(int(input()) for _ in range(n)))
ans = 0
for i in range(1, n+1):
ans += abs(ranks[i-1]-i)
print(ans)
무조건 예상 등수를 높게 적어낸 학생부터 높은 등수를 주어야 전체 불만도의 총합이 작아진다. 그러므로 예상 등수를 오름차순 정렬하여 그대로 등수를 부여하고 불만도를 구하면 된다.
'문제풀이 > Greedy' 카테고리의 다른 글
[Python/파이썬] 백준 1455번 뒤집기 II (1) | 2024.06.09 |
---|---|
[Python/파이썬] 백준 1911번 흙길 보수하기 (0) | 2024.06.04 |
[Python/파이썬] 백준 20115번 에너지 드링크 (0) | 2024.05.18 |
[Python/파이썬] 백준 17451번 평행 우주 (0) | 2024.05.03 |
[Python/파이썬] 백준 19598번 최소 회의실 개수 (0) | 2024.05.02 |