최대 힙을 이용하여 구현하는 문제이다.
정답코드 먼저 살펴보자
import heapq
import sys
n = int(sys.stdin.readline())
heap = []
for i in range(n) :
num = int(sys.stdin.readline())
if num == 0 and len(heap) == 0:
print(0)
elif num == 0 :
print(heapq.heappop(heap)[1])
else :
heapq.heappush(heap, (-num, num ))
문제에 나와있듯이 힙을 이용해야 겠다는 생각이 들었고
우선순위를 큰 값이 가장 먼저 나올수 있도록 -를 곱해서 거꾸로 넣어주었다.
python에서 heapq를 사용하는 방법은 따로 포스팅을 할 예정이다.
https://www.acmicpc.net/problem/11279
'알고리즘' 카테고리의 다른 글
숨바꼭질2[백준 12851] - python (0) | 2021.12.09 |
---|---|
최소공배수 [백준 1934] - python (0) | 2021.12.07 |
AC [백준 5430] - python (0) | 2021.12.05 |
버블 소트[백준 1377] - python (0) | 2021.12.05 |
후위 표기식[백준 1918] - python (0) | 2021.12.05 |