풀이
import heapq
def solution(operations):
heap = []
for i in operations:
if i.startswith("I"):
heapq.heappush(heap,int(i[2:]))
else:
if heap:
if i[2:] == "1":
tmp = []
while len(heap) > 1:
tmp.append(heapq.heappop(heap))
heapq.heappop(heap)
heap = tmp
else:
heapq.heappop(heap)
if heap:
min_num = heapq.heappop(heap)
max_num = min_num
while heap:
max_num = heapq.heappop(heap)
return [max_num, min_num]
return [0,0]
- operations 내의 원소들을 하나씩 처리
I
로 시작한다면 heap
에 삽입
I
로 시작하지 않고 heap
에 값이 있다면
- 인덱스 [2:]값이
1
이라면 최댓값을 삭제
- 임시 배열을 선언하고,
heap
맨 앞에서부터 하나씩 pop
해서 임시 배열에 삽입한다.
while
문은 heap
의 갯수가 1개 이상일 때까지 돈다 즉, 맨 마지막 1개를 남겨두고 반복문을 빠져나온다.
heap
의 맨 마지막 값을 pop
해서 삭제하고, 임시배열을 heap
으로 할당
1
이 아니라면 최솟값을 삭제
heap
이 비어져있지않다면
min_num
을 할당하고
heap
이 비워질때까지 반복문을 돌면서 max_num
에 할당 즉, 제일 마지막 값이 max_num
에 할당됨.
return [max_num, min_num]