컴공생의 다이어리
[파이썬, Python] 백준 7662번 : 이중 우선순위 큐 본문
백준 7662번 : 이중 우선순위 큐
내 코드
import sys, heapq
from collections import defaultdict
input = sys.stdin.readline
for _ in range(int(input())):
max_heap, min_heap = list(), list()
visited = defaultdict(bool)
for j in range(int(input())):
command = list(input().split())
if command[0] == 'I': # 데이터 삽입
heapq.heappush(min_heap, (int(command[1]), j))
heapq.heappush(max_heap, (-int(command[1]), j))
visited[j] = True
else: # 삭제
if command[1] == '1': # 최댓값 삭제
while max_heap and not visited[max_heap[0][1]]:
heapq.heappop(max_heap)
if max_heap:
visited[max_heap[0][1]] = False
heapq.heappop(max_heap)
else: # 최솟값 삭제
while min_heap and not visited[min_heap[0][1]]:
heapq.heappop(min_heap)
if min_heap:
visited[min_heap[0][1]] = False
heapq.heappop(min_heap)
while max_heap and not visited[max_heap[0][1]]: heapq.heappop(max_heap)
while min_heap and not visited[min_heap[0][1]]: heapq.heappop(min_heap)
print(-max_heap[0][0], min_heap[0][0]) if max_heap and min_heap else print("EMPTY")
728x90
'Development > Algorithm & Coding Test' 카테고리의 다른 글
[파이썬, Python] 백준 1717번 : 집합의 표현 (0) | 2022.05.18 |
---|---|
[파이썬, Python] 백준 11725번 : 트리의 부모 찾기 (0) | 2022.05.17 |
[파이썬, Python] 백준 11286번 : 절댓값 힙 (0) | 2022.05.15 |
[파이썬, Python] 백준 2178번 : 미로 탐색 (0) | 2022.05.14 |
[알고리즘] 너비 우선 탐색(BFS, Breadth First Search) (0) | 2022.05.13 |
Comments