Boundary Search

이분 탐색 경계 불변식

이분 탐색은 가운데를 찍는 기술이 아니라 답이 남아 있는 구간을 계속 유지하는 불변식 설계입니다.

Invariant답 후보 구간 유지
mid중간 지점 검사
predicate참/거짓 판정
converge경계로 수렴
01

불변식 정의

반복 중에도 답이 반드시 남아 있는 구간의 의미를 먼저 정합니다.

02

mid 계산

오버플로와 무한 루프를 피하도록 구간 갱신 규칙과 함께 봅니다.

03

판정 함수

first true나 lower_bound처럼 참/거짓이 한 방향으로 바뀌어야 합니다.

04

종료 조건

left와 right가 만나는 순간 어떤 인덱스를 답으로 볼지 미리 정합니다.

오답 방지

  • 정렬 여부나 단조성이 없으면 이분 탐색을 적용할 수 없습니다.
  • 같은 mid가 반복되면 구간 갱신식이 좁혀지지 않는다는 뜻입니다.
  • lower_bound와 upper_bound는 같은 구조라도 비교 연산자가 다릅니다.

경계 유형

lower첫 이상
upper첫 초과
firstTrue첫 참
lastFalse마지막 거짓