반응형
https://www.acmicpc.net/problem/2012
등수 매기기 문제
자기가 예상한 등수와 실제 등수가 다를 때의 불만도가 둘의 차이일 때 최소값을 구하는 문제
정렬해서 비교하면 쉽게 풀어낼 수 있다.
⚙️내가 푼 정답코드
import sys
N = int(sys.stdin.readline())
rank = sorted([int(sys.stdin.readline()) for _ in range(N)]) # 정렬해서 받기
cnt = 0
for i in range(N):
if rank[i] != i+1: # 자기 예상 등수와 실제 등수가 다르면
cnt += abs(rank[i]-(i+1)) # 둘의 차이만큼 cnt에 더하기
print(cnt)
📌 문제 접근 포인트
1. 자신의 예상 등수와 실제 등수의 차이를 구해야한다. 그러면 자기가 예상한 등수로 순서대로 오름차순 정렬을 해보자
2. 오름차순으로 정렬하면 1차원 리스트이니 실제 등 수와 비교해주기 쉽다. 인덱스의 왼쪽부터 하나씩 실제 등수랑 매치를 시켜주자
3. 둘의 차이(불만도) 만큼 더해주면 불만도의 최소값을 구할 수 있다.
반응형
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 14889] 스타트와 링크(python) (0) | 2023.03.30 |
---|---|
[백준 2630] 색종이 만들기(python) (0) | 2023.03.29 |
[백준 1158] 요세푸스 문제 (python) (0) | 2023.03.27 |
[백준 1946] 신입 사원 (python) (0) | 2023.03.27 |
[백준 11443] 짝수번째 피보나치 수의 합 (python) (0) | 2023.03.27 |
댓글