Written by
최태열
on
on
[Python][프로그래머스][Level3] 이중우선순위큐
[Python][프로그래머스][Level2] 이중우선순위큐
코드
import heapq
def solution(operations):
check_min=[]
check_max=[]
for oper in operations:
if oper=="D 1":
if check_max:
heapq.heappop(check_max)
check_min=[-i for i in check_max]
heapq.heapify(check_min)
elif oper=="D -1":
if check_min:
heapq.heappop(check_min)
check_max=[-i for i in check_min]
heapq.heapify(check_max)
else:
num=int(oper.split()[1])
heapq.heappush(check_min,num)
heapq.heappush(check_max,-num)
return [-heapq.heappop(check_max),heapq.heappop(check_min)]if check_min and check_max else [0,0]
힙을 사용해 풀었다.
파이썬에서 힙 라이브러리는 최소값을 기준으로 정렬한다.
따라서 최대값을 가져올 check_max, 최솟값을 가져올 check_min을 선언한다.
operation이 ! 숫자 일 때는 check_max에는 -num을 check_min에는 num을 집어넣는다.
그리고 D 1, D-1 마다 check_max에서 값을 제거하고 D-1일때 check_min에서 값을 제거한다.
Discussion and feedback