Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

No Limitation

[최대 힙 기초] 이중우선순위큐 본문

프로그래밍

[최대 힙 기초] 이중우선순위큐

yesungcho 2024. 3. 30. 18:14

https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=python3

 

프로그래머스

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

programmers.co.kr

예전에 풀었던 이중우선순위 큐 문제 복습.

전에는 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