[Python][프로그래머스][Level3] 이중우선순위큐

[Python][프로그래머스][Level2] 이중우선순위큐

코드

import heapq
def solution(operations):
    check_min=[]
    check_max=[]
    for oper in operations:
        if oper=="D 1":
            if check_max:
                heapq.heappop(check_max)
                check_min=[-i for i in check_max]
                heapq.heapify(check_min)
        elif oper=="D -1":
            if check_min:
                heapq.heappop(check_min)
                check_max=[-i for i in check_min]
                heapq.heapify(check_max)
        else:
            num=int(oper.split()[1])
            heapq.heappush(check_min,num)
            heapq.heappush(check_max,-num)
    
    return [-heapq.heappop(check_max),heapq.heappop(check_min)]if check_min and check_max else [0,0]

힙을 사용해 풀었다.

파이썬에서 힙 라이브러리는 최소값을 기준으로 정렬한다.

따라서 최대값을 가져올 check_max, 최솟값을 가져올 check_min을 선언한다.

operation이 ! 숫자 일 때는 check_max에는 -num을 check_min에는 num을 집어넣는다.

그리고 D 1, D-1 마다 check_max에서 값을 제거하고 D-1일때 check_min에서 값을 제거한다.

Discussion and feedback