이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.
이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.
테스트케이스가 좀.. 물렁물렁한지 어떻게 풀어도 다 통과한다.
from heapq import heapify, heappop, heappush
def solution(operations):
heap = []
for op in operations:
if op[0] == 'I':
num = int(op[2:])
heappush(heap, num)
elif op == 'D -1':
if len(heap):
heappop(heap)
else:
if len(heap):
biggest = max(heap)
bigIndex = heap.index(biggest)
heap = heap[:bigIndex] + heap[bigIndex+1:]
heapify(heap)
if len(heap) == 0:
return [0, 0]
else:
return [max(heap), heap[0]]
from heapq import heapify, heappop, heappush
def solution(operations):
heap = []
for op in operations:
if op[0] == 'I':
num = int(op[2:])
heappush(heap, num)
elif op == 'D -1':
if len(heap):
heappop(heap)
else:
if len(heap):
heap.remove(max(heap))
heapify(heap)
if len(heap) == 0:
return [0, 0]
else:
return [max(heap), heap[0]]