11286번 절댓값 힙
n개의 정수를 입력 받는데 입력받은 정수는 배열한다.
0을 입력 받으면 배열한 정수들중 절댓값이 가장 작은 값을 출력하고 제거하는데 만약 배열 된 수가 없다면 0을 출력하는 문제
import heapq
# 문제 제목에서도 나와있듯이 heap을 사용했다.
import sys
input = sys.stdin.readline
heap = []
for _ in range(int(input())): # 입력할 정수의 개수
num = int(input()) # 정수입력
if num == 0: # 만약 입력받은 정수가 0이라면
if heap: # 배열된 숫자가 있을 때
print(heapq.heappop(heap)[1])
# 리스트의 첫번째 숫자 출력하고 삭제하는 메소드
else: # 배열된 수가 없으면 0 출력
print(0)
else: # 0이 아니라면
heapq.heappush(heap, (abs(num), num))
# 리스트에 (절댓값,정수) 형태를 추가한다. (heapq.heappush메소드)
# heapq를 사용하면 이진트리 구조 나열되는데 제일 작은수가 항상 첫번째로 온다.
# 절댓값을 같이 입력해줘서 절댓값이 제일 작은수가 맨 앞으로 오게 해주고
# 출력은 입력받은 정수가 출력 될 수 있도록 인덱스[1]을 출력하도록 했다.
정말 다양한 라이브러리들이 많은 것 같다..
계속 문제를 풀어보고 공부하다보면 더 많이 활용 할 수 있겠지!