문제설명
예상 등수들을 입력받아서 예상 등수와 실제 등수의 차이를 불만도라 할 때, 최소의 불만도를 구하는 문제입니다.
(불만도 예시: |예상등수 1등-실제 등수 2등|=1)
작동 순서
1.입력받을 등수의 개수를 입력받습니다.
2.예상 등수들을 순서대로 입력받습니다.
3.예상 등수들을 정렬하여 높은 예상등수들을 앞자리에 배치합니다.
4.각 자리의 예상등수들과 실제등수들의 차이를 sum에 더합니다.
5.불만도를 출력합니다.
소스코드
import sys
n= int(input())
rank = []
sum = 0
for i in range(n):
rank.append(int(sys.stdin.readline()))
rank.sort()
for i in range(n):
sum += abs(rank[i]-(i+1))
print(sum)
후기
처음에 예상 등수들을 입력받을 때 input문을 사용하였더니 계속해서 시간초과 오류가 났었는데 그로인해서 sys.stdin.readline문법을 찾아보게 되었고 이를 통해 문제를 해결하게 되었습니다. 똑같은 프로그램을 코딩하더라도 사용하는 문법등에 따라서 성능에 차이가 생길 수 있다는 것을 알게된 것 같습니다.