-
[힙(Heap)] 이중우선순위큐알고리즘/프로그래머스 2021. 10. 9. 17:54
https://programmers.co.kr/learn/courses/30/lessons/42628
이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.
I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. heapqueue 알고리즘
- https://docs.python.org/ko/3/library/heapq.html
heapq.heapify(x)
리스트 x를 선형 시간으로 제자리에서 힙으로 변환합니다.
heapq.nlargest(n, iterable, key=None)
iterable에 의해 정의된 데이터 집합에서 n 개의 가장 큰 요소로 구성된 리스트를 반환합니다. key가 제공되면 iterable의 각 요소에서 비교 키를 추출하는 데 사용되는 단일 인자 함수를 지정합니다 (예를 들어, key=str.lower). 다음과 동등합니다 == sorted(iterable, key=key, reverse=True)[:n]
- 코드
import heapq def solution(operations): queue = [] heapq.heapify(queue) for i in operations: temp = i.split(' ') op = temp[0] operand = int(temp[1]) if op=='I': heapq.heappush(queue, operand) elif len(queue) > 0 and op=='D' and operand >= 0: queue = heapq.nlargest(len(queue), queue)[1:] heapq.heapify(queue) elif len(queue) > 0: heapq.heappop(queue) if len(queue) == 0: return [0, 0] queue = sorted(queue) return [queue[-1], queue[0]]
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[탐욕법(Greedy)] 조이스틱 (0) 2021.10.09 [탐욕법(Greedy)] 체육복 (0) 2021.10.09 [위클리 챌린지] 9주차 (0) 2021.10.05 [힙(Heap)] 디스크 컨트롤러 (0) 2021.10.03 [스택/큐] 다리를 지나는 트럭 / 프린터 (0) 2021.10.03