반응형
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 개를 뽑아 리스트로 리턴
'코테 공부' 카테고리의 다른 글
프로그래머스 2개 이하로 다른 비트 (파이썬 풀이) (0) | 2021.12.03 |
---|---|
프로그래머스 보석 쇼핑 (파이썬 풀이) (0) | 2021.12.01 |
프로그래머스 괄호 회전하기 (파이썬 풀이) (0) | 2021.11.28 |
백준 [7576] 토마토 (파이썬 풀이) (0) | 2021.11.24 |
백준 [17413] 단어 뒤집기 2 (파이썬 풀이) (0) | 2021.11.23 |