Algorithms/Heap

Programmers - 이중우선순위큐 [파이썬]

Louisus 2020. 5. 13. 23:01
728x90

출처:

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)]