이분 탐색

정렬된 범위에서 절반씩 버려 log 시간에 답을 찾습니다.

← 원리 목록 · 배우기에서 자세히

템플릿

let lo = 0, hi = a.length - 1;
while (lo <= hi) {
  const mid = (lo + hi) >> 1;
  if (a[mid] === t) return mid;
  if (a[mid] < t) lo = mid + 1;
  else hi = mid - 1;
}

하한 · 상한

“이상인 첫 위치”는 조건이 참인 쪽을 남기는 변형이 필요합니다.

전제

정렬되어 있어야 합니다. 아니면 먼저 정렬하거나 다른 패턴.

한 줄

> 정렬 + 단조 조건 → 이분.

배우기에서 더 읽기

관련 문제