No Limitation
[최대 힙 기초] 이중우선순위큐 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=python3
예전에 풀었던 이중우선순위 큐 문제 복습.
전에는 heapq._heapify_max() 라는 함수를 썼었는데
사실 이런 함수 말고 그냥 -1을 곱해주는 형태로도 max_heap은 쉽게 구현할 수 있다.
당연하지 사실 min_heap의 반대가 max_heap일 뿐이니까
level 3이지만 비교적 쉽게 구현할 수 있는 문제
import heapq as hp
def solution(operations) :
queue = []
hp.heapify(queue)
for operate in operations :
if operate[0] == 'I' :
num = int(operate.split(' ')[-1])
hp.heappush(queue,num)
else :
op = operate.split(' ')[-1]
if queue :
if op == '1' :
#hp._heapify_max(queue)
#hp.heappop(queue)
queue = [-1*num for num in queue]
hp.heapify(queue)
hp.heappop(queue)
queue = [-1*num for num in queue]
if op == '-1' :
hp.heapify(queue)
hp.heappop(queue)
if queue :
hp.heapify(queue)
mins = hp.heappop(queue)
queue = [-1*num for num in queue]
hp.heapify(queue)
maxs = -1*hp.heappop(queue)
return [maxs,mins]
else :
return [0,0]
'프로그래밍' 카테고리의 다른 글
[구현] 삼각달팽이 - 공부용 (0) | 2024.04.01 |
---|---|
[완전탐색-DFS] 피로도 (0) | 2024.03.31 |
[BFS] 트리의 부모 노드 찾기 (0) | 2024.03.28 |
[BFS] 일자 기준에 따른 counting (0) | 2024.03.27 |
[BFS] 동일 Set 유형 2 (0) | 2024.03.27 |