from collections import defaultdict
import heapq as hq
def solution(operations):
max_h = []
min_h = []
dic = defaultdict(int)
for i in operations:
com, num = i.split(" ")
if com == "I":
hq.heappush(min_h, int(num))
hq.heappush(max_h, -int(num))
dic[int(num)] += 1
else:
while num == "-1" and min_h:
n = hq.heappop(min_h)
if dic[n] != 0:
dic[n] -= 1
break
while num == "1" and max_h:
n = hq.heappop(max_h)
if dic[-n] != 0:
dic[-n] -= 1
break
max = min = 0
while min_h:
n = hq.heappop(min_h)
if dic[n] != 0:
dic[n] -= 1
min = n
break
while max_h:
n = hq.heappop(max_h)
if dic[-n] != 0:
dic[-n] -= 1
max = -n
break
return [max, min]
문제를 풀고나면 항상 다른 사람의 풀이를 한번 훑어보는데 좋아요를 가장 많이 받은 풀이가 매우 깔끔하길래 손으로 몇가지 케이스를 직접 해보니 틀린 코드였다.
해당 문제는 테스트 케이스가 미흡하여 통과하는 듯 하지만 위의 코드와 같이 동기화를 위한 추가적인 작업이 필요한 문제이다.