Algorithm/문제
[백준 온라인 저지] 등수 매기기
Lim Seung Hyun
2021. 10. 26. 17:12
문제 정의
- N명의 학생들의 예상 등수와 실제 등수 간의 차이 합이 최소가 되도록 한다.
- 예상 등수와 실제 등수 간의 차이는 절대값으로 계산한다.
- 1등부터 N등까지 같은 등수는 없다.
나의 풀이
# source : https://www.acmicpc.net/problem/2012
N = int(input())
ranks = []
answer = 0
for _ in range(N):
ranks.append(int(input()))
for index, rank in enumerate(sorted(ranks)):
answer += abs((index + 1) - rank)
print(answer)
- 예상 등수와 실제 등수 간의 차이가 최소가 되어야 하므로, 예상 등수를 오름 차순으로 정렬하여 예상 등수와 실제 등수 차이를 계산했다.
- List의 인덱스는 0부터 시작하기 때문에 계산시 인덱스 + 1를 해주어 문제를 해결했다.
- 위의 문제는 Python3로 제출하면 시간 초과가 되기 때문에 PyPy3로 제출했다.
- 실제로 https://www.acmicpc.net/problem/2012 의 예제 입력 1인 (5 1 5 3 1 2)는 Python으로 실행시 7초 정도 소요되고 있다.
Github : https://github.com/Limseunghyun95/code_test/blob/master/baekjoon/p_2012.py
728x90