프로그래머스 코딩테스트 고득점 Kit_힙_이중우선순위큐

Minhee kang·2021년 8월 12일
0

문제 보러 가기 👈 클릭!

💡 풀이

✔ 풀이 방법 1 (sort 메서드 사용)

python의 heap은 최소힙. =>인덱스0에 최솟값 존제

최소값 제거 => heapq.heappop()
최대값 제거 => 정렬 후, pop() => 정렬하면 최대값이 맨 마지막 인덱스에 존재하므로 pop()하면 최대값이 삭제 됨

구현 코드👇

import heapq

def solution(operations):
    
    q = []
    for operation in operations:
        op, num = operation.split()
        if op == 'I':
            heapq.heappush(q, int(num))
        elif q and op == 'D':  #삭제 연산
            if num == '-1':  #최솟값 삭제
                heapq.heappop(q)
            else:      #최댓값 삭제
                q.sort()
                q.pop()
    
    if not q:  #q가 비어있을 경우
        return [0, 0]
    
    q.sort()   #q가 비어있지 않을 경우
    
    return [q[-1], q[0]]

✔ 풀이 방법 2 (remove 메서드 사용)

최대값 제거 => max로 최대값 구하고 remove로 제거

구현 코드👇

import heapq

def solution(operations):
    answer = []

    q = []
    for operation in operations:
        op, num = operation.split()
        if op == 'I': #삽입
            heapq.heappush(q, int(num))
        elif q and op == 'D': #삭제
            if num == '-1':  #최솟값 삭제
                heapq.heappop(q)
            else:   #최대값 삭제
                q.remove(max(q))

    if not q:
        return [0, 0]
    
    return [max(q), q[0]]

0개의 댓글