HealthyAI

Programmers) level3. 이중우선순위 큐 본문

Coding test/프로그래머스

Programmers) level3. 이중우선순위 큐

BiteApple 2023. 1. 19. 15:39
반응형

max_heap과 min_heap을 동시에 저장 하면서 비교 해야 됐던 이중 우선 순위 큐 문제이다.

처음에는 최댓값을 구하는 함수로 풀었었는데 연산 횟수가 늘고, 자료가 증가 할 수록 연산의 과부화가 생겨 우선순위 큐를 선택하여 다시 풀이법을 공부하였다.

from heapq import heappush, heappop
def solution(operations):
    min_heap = []
    max_heap = []
    for op in operations:
        if op == 'D 1':
            if max_heap:
                heappop(max_heap)
                if not max_heap or -max_heap[0] < min_heap[0]:
                    min_heap, max_heap = [], []
        elif op == 'D -1':
            if min_heap:
                heappop(min_heap)
                if not min_heap or -max_heap[0] < min_heap[0]:
                    min_heap, max_heap = [], []
        else:
            num = int(op[2:])
            heappush(min_heap, num)
            heappush(max_heap, -num)
    if not min_heap:
        return [0,0]
    return [-heappop(max_heap), heappop(min_heap)]
반응형