[programmers/py] 이중우선순위큐

승민·2024년 2월 20일

알고리즘

목록 보기
61/171

이중우선순위큐

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

문제 설명

명령어 수신 탑(높이)
I 숫자 큐에 주어진 숫자를 삽입합니다.
D 1 큐에서 최댓값을 삭제합니다.
D -1 큐에서 최솟값을 삭제합니다.

연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.

풀이

import heapq

def solution(operations):
    answer = []
    for op in operations:
        s, num = op.split(" ")
        num = int(num)
        
        if s == "I":
            heapq.heappush(answer, num)
        else :
            if len(answer) != 0:
                if num == -1 :
                    heapq.heappop(answer)
                else :
                    answer.remove(max(answer))
			heapq.heapify(answer)
    if not answer:
        return [0,0]
    else :
        return [max(answer), answer[0]]

0개의 댓글