Skip to content

최소 힙 - 제일 급한 것부터 꺼내는 구조 ​

힙(heap) = "부모가 항상 자식보다 작다(최소 힙)" 규칙을 지키는 트리 구조. 배열로 표현합니다: i번째 부모의 자식은 2i+1, 2i+2 번째.

        (1)          ← 루트 = 항상 최솟값
       /   \
     (3)   (2)
     / \
   (7) (5)
  • peek: 최솟값 보기 → 그냥 루트 보면 됨 → O(1)
  • push: 끝에 추가 후 부모와 비교하며 올림 (_heapify_up) → O(log n)
  • pop: 루트 꺼냄, 마지막 원소를 루트로 옮긴 뒤 자식과 비교하며 내림 (_heapify_down) → O(log n)

왜 TTL 관리에 힙이 적합한가? ​

TTL = (expire_at, key)를 저장하고, 가장 먼저 만료되는 것을 계속 물어봐야 합니다.

  • 만료 시각이 가장 작은 것 = 최솟값 → 힙의 루트에 항상 있음!
  • 매번 전체를 정렬하거나 순회하는 것보다 훨씬 효율적입니다.

출처: Codyssey-B1/B5-1