[Programmers] 이중우선순위큐

태환·2024년 3월 21일
0

Coding Test

목록 보기
135/151

📌 [Programmers] 이중우선순위큐

📖 문제

📖 예제

📖 풀이

def solution(operations):
    import heapq
    heap = []
    max_heap =[]
    for i in operations:
        i = i.split()
        if i[0] == 'I':
            heapq.heappush(heap, int(i[1]))
            heapq.heappush(max_heap, (int(i[1])*-1, int(i[1])))
        else:
            if not heap:
                pass
            elif i[1] == '1':
                num = max(heap)
                heap.remove(num)
                heapq.heappop(max_heap)
            else:
                num = max(max_heap)
                max_heap.remove(num)
                heapq.heappop(heap)
    if heap:
        return [heapq.heappop(max_heap)[1], heapq.heappop(heap)]
    else:
        return [0,0]

heap 자료구조는 최소힙을 기본으로 구성되어있기 때문에 큰 수를 빼는 것을 고려하여 -1을 곱한 값을 우선순위로 저장할 max_heap도 heap과 함께 준비한다.

profile
연세대학교 컴퓨터과학과 석사 과정

0개의 댓글