프로그래밍/Algorithm

프로그래머스 이중우선순위큐

모지사바하 2021. 11. 15. 18:08

https://programmers.co.kr/learn/courses/30/lessons/42628

 

코딩테스트 연습 - 이중우선순위큐

 

programmers.co.kr

 

 

글쎄.. 이문제는 무지 쉬웠다.

 

뭐 고민할게 있나.. 하고 5분만에 풀고 제출하니 통과했다.

 

그냥 우선순위큐는 기본적으로 최소힙이니까 최소값을 꺼낼때는 heappop 으로 최대값을 꺼낼땐 pop 으로.

 

최종적으로 남은 값이 있으면 answer 에 맥스, 민으로 값을 넣어주면 끝이다..

 

이게 왜 레벨 3이지??

import heapq
from collections import deque


def solution(operations):
    answer = [0, 0]
    d = deque(operations)
    h = []
    while d:
        operation = d.popleft().split(' ')
        command = operation[0]
        num = int(operation[1])

        if command == 'I':
            heapq.heappush(h, num)
        else:
            if h:
                if num < 0:
                    heapq.heappop(h)
                else:
                    h.pop()

    if h:
        answer[0] = max(h)
        answer[1] = min(h)

    return answer