1781 - 컵라면

LeeKyoungChang·2022년 5월 9일
0

Algorithm

목록 보기
108/203
post-thumbnail

📚 1781 - 컵라면

컵라면

 

이해

데드라인과 컵라면 순으로 정렬을 한 후, heapq를 이용하여 구현하면 된다.

설명이 잘되어 있는 블로그를 참고하며 문제를 해결하였다.
참고블로그

 

소스

import sys  
import heapq  
  
  
read = sys.stdin.readline  
  
n = int(read())  
  
arr = []  
  
for _ in range(n):  
    deadline, cupNoodle = map(int, read().split())  
    arr.append((deadline, cupNoodle))  
  
# 오름차순 정렬  
arr.sort()  
  
q = []  
for in_arr in arr:  
    heapq.heappush(q, in_arr[1])  
  
    # heapq에 컵라면수가 저장된다.  
    # 컵라면이 추가될 때마다 인덱스가 추가되는데 이는 단위시간 1씩 올라가는 것을 의미한다.  
    # 컵라면이 추가되면 heapq 인덱스가 1씩 추가되는데, 만약 현재 마감시간이 heapq 길이보다 작다면,  
    # heapq에 있는 컵라면 중 가장 작은 갯수를 가진 컵라면을 꺼낸다. (가장 작은 수 컵라면이 나온다.)  
    # (이미 정렬이 된 상태에서 검사를 하기 때문에, 데드라인(마감시간)보다 heapq 길이가 크다면 heapq 데이터를 꺼낸다.)  
	# 결국 데드라인에 해당되는 가장 큰 값들을 저장하게 된다.
  
    if in_arr[0] < len(q):  
        t = heapq.heappop(q)  
  
  
print(sum(q))
스크린샷 2022-05-09 오후 1 37 06

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글