본문 바로가기

두두의 알고리즘/문제

[연결리스트/트리구조] 프로그래머스 L3 '이중우선순위' (Python)

728x90

<문제 링크>

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

 

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

 

programmers.co.kr


<문제 풀이>

  1. 최대 1,000,000개의 최솟값, 최댓값을 넣고 빼야 하므로 heapq 사용
  2. 문제에서 주어진 조건대로 알고리즘 구성

<코드>

import heapq
def solution(operations):
    answer = []
    
    for i in operations:
        if i[0]=="I":
            heapq.heappush(answer,int(i[2:]))
        else:
            if answer!=[]:
                if i[2:]=="-1":
                    heapq.heappop(answer)
                else:
                    answer.pop()
                    
    if answer==[]:
        return [0,0]
    else:
        return [max(answer),min(answer)]

 

<고쳐야 할 점>

  • 연결 리스트 또는 트리구조로 알고리즘 짤 수 있는 방법은?