Programmers - 이중우선순위큐 [파이썬]
출처:
https://programmers.co.kr/learn/courses/30/lessons/42628
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
------
첫풀이:
def solution(operations):
q = []
ops = []
for i in operations:
if i[0] == 'I':
q.append(int(i[2:]))
else:
ops.append(int(i[-1]))
q.sort(reverse=True)
if len(ops) >= len(q):
return [0,0]
else:
for i in ops:
if i == -1:
q.pop()
else:
q.pop(0)
return q
------
heap 사용:
import heapq
def solution(operations):
heap = []
for operation in operations:
operator, operand = operation.split(" ")
operand = int(operand)
if operator == "I":
heapq.heappush(heap, operand)
elif heap:
if operand < 0:
heapq.heappop(heap)
else:
heap.remove(max(heap))
if not heap:
return [0,0]
return [max(heap), heap[0]]
------
heap 사용 X:
def solution(operations):
answer = []
for i in operations:
a, b = i.split(" ")
if a == "I":
answer.append(int(b))
else:
if len(answer) > 0:
if b == "1":
answer.pop()
else:
answer.pop(0)
answer.sort()
if len(answer) == 0:
return [0,0]
else:
return [max(answer), min(answer)]