피드로 돌아가기
Sort Colors (Dutch National Flag Algorithm)
Dev.toDev.to
Backend

Dutch National Flag Algorithm을 통한 O(1) 공간 복잡도 One-pass 정렬 구현

Sort Colors (Dutch National Flag Algorithm)

Jaspreet singh2026년 6월 2일3intermediate

Context

0, 1, 2 세 가지 값만 존재하는 배열을 In-place로 정렬해야 하는 제약 조건 발생. 단순 Counting 방식은 시간 복잡도 O(N)과 공간 복잡도 O(1)을 만족하나, 전체 배열을 두 번 순회해야 하는 Two-pass 구조의 한계 존재.

Technical Solution

  • Three-pointer 전략을 통한 배열의 0, 1, 2 영역으로의 실시간 Partitioning 설계
  • low 포인터를 활용한 0-region의 경계 확정 및 요소 배치
  • high 포인터를 이용한 2-region의 역방향 배치로 불필요한 데이터 이동 최소화
  • mid 포인터를 통한 현재 요소의 값 판별 및 영역별 Swap 로직 수행
  • 0-region 배치 시 mid 포인터를 함께 증가시켜 중복 검사 제거
  • 2-region 배치 시 Swap 된 요소의 재검증을 위해 mid 포인터 유지 전략 채택

- 3개 이하의 고정된 고유값 세트를 정렬해야 하는 상황인지 확인 - Two-pass 방식의 시간 비용 절감을 위한 One-pass 요구사항 검토 - 추가 메모리 할당 없는 In-place 정렬 필요성 판단 - Partitioning 기반의 포인터 조작 패턴 적용 가능성 분석

원문 읽기