https://school.programmers.co.kr/learn/courses/30/lessons/42628
heap을 사용한 문제. 계속 IDE의 도움을 받다가 이번에 네이버 준비를 하면서 IDE 없이 문제를 풀고있는데 heapq의 사용법이 잘 기억안나서 고생했다.
숫자를 넣어줄떄는 heapify를 사용하고 최소값을 뺄때는 그냥 heappop() 최댓값을 뺄때는 -1을 곱해주고 heappop을 한뒤에 다시 -1을 곱해서 heappush로 넣어줬다.
import heapq
import collections
def make_reverse(heapq_list):
temp_list = []
while heapq_list:
heapq.heappush(temp_list,-heapq.heappop(heapq_list))
heapq.heappop(temp_list)
temp_list2 = []
while temp_list:
heapq.heappush(temp_list2,-heapq.heappop(temp_list))
return temp_list2
def solution(operations):
answer = []
num_heap = []
operations = collections.deque(operations)
while operations:
popleft = operations.popleft()
num_list = list(popleft)
if num_list[0] == "I":
heapq.heappush(num_heap,int("".join(num_list[1:])))
elif num_list[0] == "D":
if len(num_heap) > 0:
if num_list[2] == "-":
heapq.heappop(num_heap)
else:
num_heap = make_reverse(num_heap)
print(num_heap)
if len(num_heap) < 2:
answer = [0,0]
else:
answer = [max(num_heap),min(num_heap)]
return answer