링크 : https://www.acmicpc.net/problem/2012
2012번: 등수 매기기
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.
www.acmicpc.net
- 문제
- 소요시간: 55분

- 설계하기(접근방법)
1. 입력받기
등수를 입력받는다
2. 구현하기
먼저 현재 등수에 자리 배치가 가능한 사람은 모두 배치한다
그 후 작은 등수를 순서대로 앞에서부터
빈자리를 가득 채운다
3. 출력하기
빈자리에 강제로 앉은 사람의 불만도의 합을 출력한다
- 코드(출력)
import heapq
n = int(input())
maybe_rank = []
real_rank = [0 for _ in range(n)]
for i in range(n):
rank = int(input())
if rank > n:
heapq.heappush(maybe_rank, rank)
else:
if real_rank[rank - 1] == 0:
real_rank[rank - 1] = rank
else:
heapq.heappush(maybe_rank, rank)
mad = 0
i = 0
while i < n:
if real_rank[i] == 0:
a = heapq.heappop(maybe_rank)
real_rank[i] = a
mad += abs((i + 1) - a)
i += 1
print(mad)
- 얻어갈 부분
1. 자신을 N등이상으로 예측하는 멍청이 때문에 디버깅에 오래걸렸다
'알고리즘(백준) > 그리디' 카테고리의 다른 글
| [알고리즘/그리디] 1049번 : 기타줄 - python (0) | 2024.03.05 |
|---|---|
| [알고리즘/그리디] 2170번 : 선 긋기 - python (0) | 2024.02.26 |
| [알고리즘/그리디] 1459번 : 걷기 - python (0) | 2024.02.16 |
| [알고리즘/그리디] 2812번 : 크게 만들기 - python (0) | 2024.01.09 |
| [알고리즘/그리디] 1715번 : 카드 정렬하기 - python (1) | 2024.01.08 |