[알고리즘] 이진 탐색(Binary Search) 알고리즘

이진 탐색(Binary Search) 알고리즘에 대해 알아보자 :)

Jul 28, 2025

이진 탐색 알고리즘이란?

📌
이진 탐색(Binary Search) 알고리즘
정렬된 데이터에서 중앙값을 기준으로 범위를 반씩 줄여가며 원하는 값을 찾는 탐색 알고리즘
ex) 책에서 단어를 찾을 때, 처음부터 한 장씩 넘기기보다는 중간부터 펼쳐서 단어 위치를 좁혀가는 방식
notion image

이진 탐색 알고리즘 특징

  • 전제 조건: 데이터가 반드시 정렬되어 있어야
  • 시간 복잡도: 매 탐색마다 탐색 범위를 절반으로 줄이므로 **O(log N)**의 시간복잡도를 가짐
  • 정확성: 필요한 값이 정확히 있는 위치를 찾아냄
  • 낮은 시간 비용: 순차 탐색보다 훨씬 빠름 (특히 데이터가 클 때 유리)

이진 탐색 알고리즘 실제 적용 사례

  • 정렬된 배열에서 특정 값 찾기
  • 검색 기능 구현: 예) 사전, DB 인덱스, 이분 탐색 기반 검색
  • 최솟값/최댓값을 구하는 최적화 문제: 파라메트릭 서치 (ex: 최소 배달 시간 찾기)
  • 탐색 범위를 좁혀가며 정답을 찾는 문제 (ex: 백준 2110 공유기 설치)

이 탐색 알고리즘의 단계

순서
절차
1
탐색할 배열의 시작점(left), 끝점(right)을 설정합니다.
2
mid = (left + right) // 2를 계산하여 중간 값을 찾습니다.
3
중간값과 찾는 값을 비교해, 왼쪽 또는 오른쪽 반절로 탐색 범위를 좁힙니다.
4
값을 찾거나 탐색 범위가 사라질 때까지 2~3을 반복합니다.

이진 탐색 구현 (ex. python)

def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid # target found elif arr[mid] < target: left = mid + 1 # search right half else: right = mid - 1 # search left half return -1 # not found

선형 탐색 vs. 이진 탐색 비교

항목
선형 탐색
이진 탐색
전제 조건
정렬 필요 없음
정렬 필수
시간 복잡도
O(N)
O(log N)
데이터 크기
작을 때 유리
클수록 유리
구현 난이도
매우 쉬움
조금 더 복잡