binary search

경계 탐색 기준

[lo, hi), lower_bound, firstTrue, ok(mid)는 이분 탐색을 값 찾기보다 경계 찾기로 이해하게 합니다.

[lo, hi)

이진 탐색 구간 불변식

반열림 구간은 수렴 후 lo==hi가 답이 되는 구조가 깔끔합니다.

lower_bound

lower_bound 위치

중복 값이 있어도 첫 위치를 얻을 수 있습니다.

firstTrue

판정 함수의 첫 참 찾기

속도, 시간, 용량 같은 매개변수 탐색에 자주 쓰입니다.

mid 갱신

경계 이동 규칙

경계 갱신이 반대로 되면 무한 루프나 한 칸 오류가 납니다.

단조성 x가 커질수록 조건 결과가 한 방향으로만 바뀌어야 합니다.
초기 경계 답이 반드시 들어 있는 lo와 hi를 잡는 것이 코드보다 먼저입니다.
수렴 while(lo < hi) 구조에서는 매 반복 구간 길이가 줄어야 합니다.