

📌 문제 탐색하기
- N명의 학생의 예상 등수가 N개의 줄에 걸쳐서 입력된다.
- 예상 등수와 실제 등수의 차이인 불만도가 최소가 되도록 실제 등수를 배정해야 한다.
💡 알고리즘 선택
- 그리디 알고리즘을 사용해서 주어진 상황에서 가장 좋은 것만 고르게 해야할 것 같다.
- 예상 등수를 오름차순으로 정렬하고 인덱스에 따른 실제 등수와의 차이를 구하면 불만도를 최소화 할 수 있다.
📌 코드 설계하기
1. 문제의 input을 리스트 형식으로 입력받음
2. 저장한 예상 점수를 오름차순으로 정렬함
3. for문을 활용해 인덱스에 따른 실제 등수와 예상 등수의 차이의 절댓값을 계산하여 diff 변수에 더해줌
4. diff 값을 출력함
📌 시도 회차 수정 사항 (Optional)
1회차
문제의 입력을 받을 때 input()으로 받게 했는데, 시간 초과가 발생함.
input() -> sys.stdin.readline()으로 변경하여 해결.
📌 정답 코드
import sys
n = int(sys.stdin.readline())
rank = []
for _ in range(n):
rank.append(int(sys.stdin.readline()))
rank.sort()
diff = 0
for i in range(n):
diff += abs(rank[i] - (i+1))
print(diff)