코테 공부
프로그래머스 이중우선순위큐 (파이썬 풀이)
moonsun623
2021. 11. 30. 22:30
반응형
https://programmers.co.kr/learn/courses/30/lessons/42628?language=python3
코딩테스트 연습 - 이중우선순위큐
programmers.co.kr
내가 한 풀이
import heapq
def solution(operations):
answer = []
heap=[]
for o in operations:
o=o.split()
if o[0]=='I':
num=int(o[1])
heapq.heappush(heap,num)
else:
if len(heap)==0:
pass
elif o[1]=='-1':
heapq.heappop(heap)
elif o[1]=='1':
heap = heapq.nlargest(len(heap), heap)[1:]
heapq.heapify(heap)
if heap:
return [heapq.nlargest(1,heap)[0],heapq.heappop(heap)]
else:
return [0,0]
처음에는 최대힙과, 힙을 각각 만들어 구현하려 했는데
heapq의 메소드 중 nlargest를 알게되었다.
heapq.nlargest(n, heap) = heap중 큰 수 n 개를 뽑아 리스트로 리턴