[Python] 프로그래머스 - 이중우선순위큐
728x90
반응형
programmers.co.kr/learn/courses/30/lessons/42628
기본 heapq문제이다. 파이썬에서 '우선순위큐'를 사용하려면 priorityQueue가 아닌 heapq를 사용해야한다.
import heapq
def solution(operations):
# 힙 정렬
def heap_sort(nums):
heap = []
for num in nums:
heapq.heappush(heap, num)
sorted_nums = []
while heap:
sorted_nums.append(heapq.heappop(heap))
return sorted_nums
h = []
for o in operations:
op = o.split()
# 명령어가 I이면 h 힙에 숫자 삽입
if op[0] == 'I':
heapq.heappush(h, int(op[1]))
# 명령어가 D 1 이면 힙정렬을 한 뒤 마지막 원소가 최댓값이므로 pop(-1)
elif op[0] == 'D' and op[1] == '1':
if h:
h = heap_sort(h)
h.pop(-1)
# 명령어가 D -1 이면 그냥 heap의 첫번째 원소 pop
else:
if h:
heapq.heappop(h)
# h가 비어있으면 [0, 0] 아니면 [최댓값, 최솟값] 출력
return [max(h), min(h)] if h else [0,0]
(프로그래머스 level: 3)
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 타겟 넘버 (0) | 2021.05.13 |
---|---|
[Python] 프로그래머스 - 구명보트 (0) | 2021.05.08 |
[Python] 프로그래머스 - 다리를 지나는 트럭 (0) | 2021.05.05 |
[Python] 프로그래머스 - 기능개발 (0) | 2021.05.05 |
[Python] 프로그래머스 - 등굣길 (0) | 2021.05.02 |
TAGS.