최소 값과 최대 값을 빠르게 찾을 수 있게 도와주는 힙(Heap)
[Python] 백준 2357 : 최솟값과 최댓값 (세그먼트 트리)
class KthLargest: def init(self, k, nums): self.heap = nums self.k = k heapq.heapify(self.heap) while len(self.heap) > k: heapq.heappop(self.heap) def add(self, val): heapq.heappush(self.heap, val) if len(self.heap) > self.k: heapq.heappop(self.heap) return self.heap[0]
def dijkstra(graph, start): distances = {vertex: float('infinity') for vertex in graph} distances[start] = 0 pq = [(0, start)] while pq: current_distance, current_vertex = heapq.heappop(pq) if current_distance > distances[current_vertex]: continue for neighbor, weight in graph[current_vertex].items(): distance = current_distance + weight if distance < distances[neighbor]: distances[neighbor] = distance heapq.heappush(pq, (distance, neighbor)) return distances
class Node: def init(self, char, freq): self.char = char self.freq = freq self.left = None self.right = None def lt(self, other): return self.freq < other.freq def encode(node, left=True, binString=''): if node is None: return '' if node.char is not None: return {node.char: binString} (l, r) = (node.left, node.right) res = {} res.update(encode(l, True, binString +