반응형
코드
from heapq import heappush,heappop
def solution(operations):
max_h = []
min_h = []
for i in operations:
comm, num = i.split()
if comm == 'I':
heappush(max_h,-int(num))
heappush(min_h,int(num))
elif comm == 'D' and min_h:
if int(num) == 1: #최댓값 삭제
n = -heappop(max_h)
min_h.remove(n)
elif int(num) == -1: #최솟값 삭제
n = -heappop(min_h)
max_h.remove(n)
if min_h:
return [-heappop(max_h),heappop(min_h)]
else:
return [0,0]
설명
최소힙과 최대힙 두 개를 만들어서 각각 최솟값과 최댓값을 구하기 위해 사용했다.
명령어가 I 인 경우 heapq는 최소힙으로 구현되어 있기 때문에 최대힙을 만들기 위해서는 값에 - 를 붙여서 넣어줘야 한다.
명령어가 D 인 경우 -1 이면 최대힙에서 최댓값을 먼저 빼내고 변수 n에 -를 붙여 저장하였고, remove를 사용하여 최소힙에서도 삭제해줬다. 1 인 경우 반대로 하면 된다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[프로그래머스][Python] 더 맵게 (0) | 2023.02.17 |
---|---|
[프로그래머스][Python] 프린터 (0) | 2023.02.10 |
[백준][Python] 1417번 국회의원 선거 (0) | 2023.02.01 |
[백준][Python] 11866번 요세푸스 문제 0 (0) | 2023.01.31 |
[프로그래머스][Python] 두 큐 합 같게 만들기 (1) | 2023.01.30 |
댓글