입출력 예 설명
16을 삽입 후 최댓값을 삭제합니다. 비어있으므로 [0,0]을 반환합니다.
7,5,-5를 삽입 후 최솟값을 삭제합니다. 최대값 7, 최소값 5를 반환합니다.
접근법
heapq를 사용하면 오름차순으로 정렬된 상태로 저장이 되므로, heapq를 사용하였습니다. 먼저 입력된 명령어를 ' '를 기준으로 잘라주고, command에 따라 처리를 해줍니다.heapq.nlargest(n,list)함수는 list에 있는 가장 큰 숫자를 순서대로 n개만큼 뽑아 리스트로 반환해주는 함수입니다. 반대로 heapq.nsmallest(n,list) 함수는 list에 있는 갖아 작은 수를 순서대로 n개만큼 뽑아 리스트로 반환해주는 함수입니다! 이를 사용하면 쉽게 구할 수 있습니다!
나의 코드
import heapq
def solution(operations):
heap = []
for operation in operations:
command, num = operation.split(' ')
if command == 'I':
heapq.heappush(heap,int(num))
elif command == 'D' and len(heap) > 0:
if num == '1':
heap.pop(heap.index(heapq.nlargest(1,heap)[0]))
else:
heapq.heappop(heap)
if len(heap) == 0: return [0,0]
return [heapq.nlargest(1,heap)[0],heapq.nsmallest(1,heap)[0]]