피드로 돌아가기
Dev.toBackend
원문 읽기
Boyer-Moore Voting Algorithm을 통한 O(n) 시간 및 O(1) 공간 복잡도 달성
Majority Element - I
AI 요약
Context
배열 내 n/2 초과 빈도로 등장하는 Majority Element를 식별하는 문제 상황 분석. Brute Force의 시간 복잡도 과다와 HashMap의 추가 공간 비용 발생이라는 트레이드오프 존재.
Technical Solution
- Moore's Voting Algorithm 도입을 통한 공간 복잡도 최소화
- 동일 원소 발견 시 카운트를 증가시키고 다른 원소 발견 시 감소시키는 상쇄 메커니즘 설계
- 과반수 이상의 빈도를 가진 원소가 다른 모든 원소의 결합보다 많다는 수학적 성질 활용
- 단일 Pass 스캔을 통해 최종 생존 후보자를 결정하는 선형 탐색 구조 채택
- HashMap의 O(n) Space Overhead를 제거하여 메모리 효율 극대화
Impact
- 시간 복잡도: O(n²) (Brute Force) → O(n) (Moore's Voting)으로 개선
- 공간 복잡도: O(n) (HashMap) → O(1) (Moore's Voting)으로 최적화
실천 포인트
1. 데이터의 분포 특성(예: 과반수 점유)이 명확할 때 추가 자료구조 없이 해결 가능한 알고리즘이 있는지 검토
2. 시간 복잡도와 공간 복잡도 사이의 Trade-off를 분석하여 메모리 제약 환경에 최적화된 로직 선택
3. 단순 빈도 계산을 넘어 원소 간 상쇄(Cancellation) 논리를 적용하여 효율적인 필터링 구조 설계