본문 바로가기

⏳ 알고리즘/python 알고리즘 문제 풀이

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

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

import heapq

def solution(operations):
    queue = []
    
    def insert(queue, num):
        heapq.heappush(queue, num)
        return queue
    
    def max_delete(queue):
        queue.remove(max(queue))
        heapq.heapify(queue)
        return queue
    
    def min_delete(queue):
        heapq.heappop(queue)
        return queue
        
    
    for o in operations:
        o = o.split(' ')
        if o[0] == 'I':
            insert(queue, int(o[1]))
        if o[0] == 'D' and queue:
            if o[1][0] == '1':
                max_delete(queue)
            else:
                min_delete(queue)
    
    if len(queue) == 0:
        return [0,0]
    else:
        return [max(queue), min(queue)]