반응형
힙의 자료구조 설명하기 위한 문제였다.
파이썬은 힙을 모듈로 구현하여 함수 입력만 하면 해결되었다.
내가 참고한 블로그는 이분이었다.
https://www.daleseo.com/python-heapq/
파이썬의 heapq 모듈로 힙 자료구조 사용하기
Engineering Blog by Dale Seo
www.daleseo.com
너무 깔끔하게 설명하셨다.
정리하면 heappush하면 이진트리 순서대로 추가되고,
heappop을 하면 기본적으로 최소 값을 삭제하고 그다음 최솟값이 그 자리에 들어간다.
from heapq import heappush,heappop
import sys
input = sys.stdin.readline
stg = []
for i in range(int(input().strip())):
call = int(input().strip())
if call>0:
heappush(stg,(-call,call))
else:
if stg:
print(heappop(stg)[1])
else:
print(0)
이 문제에서는 최대 힙을 구현해야하기에, 큰 값을 빼야했다.
그래서 튜플로 기준이 되는 앞의 값을 음수로 취해 가장 작게 만들고
heapop을 print할 때에는 튜플의 1번째 값을 출력하여 최대값을 보였다.
반응형
'알고리즘 문제들 으악 > 백준' 카테고리의 다른 글
| [python]25682번 체스판 다시 칠하기 2, 2000*2000제한 사항 확인 (0) | 2022.12.19 |
|---|---|
| [python]2667번 단지번호 붙이기, str 정렬 순서 (0) | 2022.12.14 |
| [python]1260번 DFS와 BFS, print문 end 사용으로 최적화 (0) | 2022.12.11 |
| [python]2606번 바이러스, 컴포넌트 확인 & 최적화 (0) | 2022.12.11 |
| [python]24444번 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2022.12.10 |