편집 시간: 2022년 2월 16일 오후 4:02
코드
Algorithm/7662.py at main · Junroot/Algorithm
풀이
실패한 풀이: Node 클래스 만들기
최대 힙과 최소 힙을 두 개 마련해두고, 삭제 될 때 해당 숫자가 삭제되었다고 표시만 하면되기 때문에, 힙의 각 노드들을 아래와 같이 클래스로 만들어 deleted
필드를 두려고했다.
class Node:
def __init__(self, data):
self.data = data
self.deleted = False
하지만 한 가지 문제가 있었다. heapq
라이브러리는 최대 힙을 만들 수 없다. 그래서 일반적인 힙 문제에서는 음수를 취하여 힙에 추가하는데 현재는 최소 힙과 최대 힙이 노드를 공유하고 있어야되기 때문에 불가능하다.
성공한 풀이: 해쉬 맵 사용하기
현재 이중순위 큐에 각 숫자가 몇 개씩 남아 있는지 확인하기 위해서 해쉬 맵을 하나 만들었다. 만약 pop을 할 때 해쉬 맵에 현재 숫자의 개수가 0이라면 새로 하나 pop을 하여 반환해야 된다.