005. Kth Largest Element in a Stream (Easy) – Part 1 : sort와 bisect

“Kth Largest Element in a Stream” 알고리즘 문제는 데이터 스트림에서 실시간으로 k번째로 큰 요소를 찾는 문제입니다. 이 문제는 LeetCode에서 자주 출제되는 대표적인 알고리즘 문제 중 하나입니다.

이 문제의 핵심은 데이터 스트림이 실시간으로 주어지는 상황에서 효율적으로 k번째로 큰 요소를 찾아내는 것입니다. 일반적인 정렬 알고리즘을 사용하면 데이터 스트림이 계속 변경되므로 시간 복잡도가 매우 높아집니다.

효율적인 해결 방법은 최소 힙(Min Heap)을 사용하는 것입니다. 힙은 항상 최소값이나 최대값을 빠르게 찾을 수 있는 자료구조이므로, 데이터 스트림에서 실시간으로 k번째로 큰 요소를 찾을 수 있습니다.

구체적인 구현 과정은 다음과 같습니다:

  1. 데이터 스트림에서 요소가 들어올 때마다 최소 힙에 추가합니다.
  2. 힙의 크기가 k보다 크면 최소값을 제거합니다. 이렇게 하면 힙에는 항상 k개의 최대값이 유지됩니다.
  3. 언제든지 힙의 루트 노드(최소값)가 k번째로 큰 요소가 됩니다.

이러한 접근 방식을 사용하면 각 요소를 추가/제거할 때 O(log k) 시간 복잡도를 가지므로, 데이터 스트림에서 실시간으로 k번째로 큰 요소를 효율적으로 찾을 수 있습니다.

Scroll to Top