본문 바로가기
코딩테스트/프로그래머스

[힙(Heap)] Level 3 이중우선순위큐 - 파이썬

by 의정부핵꿀밤 2022. 1. 17.
728x90

나 저번에 카뱅 코테보고 결심했어

어차피 백엔드 준비하는거, 이제 코테 파이썬이랑 자바로 하려고!!

그 때 자바로 봐서 함수 찾아보느라 거의 못했거든,,,

생각해보니까 백이면 자바 공부삼아 해도 좋을 것 같아서!

암턴! 일단 스터디는 파이썬으로 진행하고 앞에 문제들 자바로 다시 풀어볼거임


문제 설명 및 제한 사항
입출력 예시 및 설명


파이썬 풀이)

그냥 간단하게 구현했다

저기 뭐야 그 heap 써서 최소힙 만들고 힙에서 최댓값 찾을 땐 nlargest라는 heapq 함수 써서 구했다

그리고 마지막에 최대, 최소 반환은 max함수랑 min 함수 사용함!

 

아 처음에 런타임 에러가 났는데 그게 원소를 삭제하는 경우에 heap이 비어있을 수도 있으니까 그 경우는 조건문으로 예외 처리를 해줘야 되더라구

그래서 거기는 len(힙)이 0이면 그냥 pass 해서 넘어가도록 했더니 통과!

Level 3치고 쉬운 문제였던거같다!

 

 

파이썬 코드)

 

import heapq
def solution(operations):
    answer = []
    hp = []
    for i in operations:
        
        if i[0] == "I":
            heapq.heappush(hp, int(i[2:]))
        else:
            if len(hp) == 0:
                pass
            elif i[2]== "-":
                heapq.heappop(hp)
            else:
                hp = heapq.nlargest(len(hp), hp)[1:]
                heapq.heapify(hp)
                
    if hp:
        answer.append(max(hp))
        answer.append(min(hp))    
    else:
        answer.append(0)
        answer.append(0)
        
    return answer

 

 

 

 

다음엔 자바로 돌아오마

빠잉

728x90

댓글