Search
들어가기 앞서
해당 글은 이분탐색을 공부하며 개인적으로 느낀 점을 정리하는 글입니다. 따라서 부족한 부분이 많을 수 있습니다. 다만, 이분탐색은 이해하기 쉬운 개념에 비해 완벽하게 구현하기 어려운 기법입니다. 이 글은 실용적인 관점에서 이분탐색을 더 잘 사용하고 싶어하시는 분들께 제 고민과 경험을 공유하고자 작성되었습니다. 참고로 해당 글의 예시들은 Python을 사용하여 작성하였습니다.
글에서 소개하는 개념을 이해하기 위해 먼저 백준 온라인 저지에서 해당 문제들을 풀어보실 것을 추천드립니다. 만약 모든 문제를 무난하게 푸실 수 있다면, 이 글은 읽는 게 도움이 되지 않을 수도 있겠네요.
글이 좀 길어질 지도 모르겠습니다.
문제 목록
1. 이분 탐색이란?
이분 탐색은 정렬된 리스트에서 특정한 값을 찾는 알고리즘입니다.
이 알고리즘은 리스트의 중간값을 선택하여 찾고자 하는 값과 비교합니다. 만약 중간값이 찾고자 하는 값보다 크다면 리스트의 왼쪽 절반을 다시 탐색하고, 중간값이 찾고자 하는 값보다 작다면 리스트의 오른쪽 절반을 다시 탐색합니다. 이 과정을 반복하여 값을 찾습니다.
이분 탐색은 리스트의 크기가 크거나 탐색 범위가 넓을 때 유용한 알고리즘입니다.
예를 들어, 1부터 100까지의 숫자 중에서 73을 찾는다면 이분 탐색을 사용하면 최대 7번의 비교만으로 값을 찾을 수 있습니다.
하지만, 리스트의 크기가 작거나 탐색 범위가 좁을 경우에는 선형 탐색(linear search)이 더 효율적입니다.
이분 탐색은 시간 복잡도가 O(log n)으로 매우 빠르기 때문에 대용량의 데이터를 처리할 때 유용합니다.
2. 등장 유형
이분탐색은 O(logn) 안에 수행되기 때문에 굉장히 빠른 탐색 알고리즘 중 하나입니다. 실제 알고리즘 문제에서 이분탐색을 만난다면 그 문제는 다음과 같은 특성을 가지고 있을 가능성이 높습니다.
•
변수의 범위가 제한조건에서 굉장히 넓게 제시되어 있는 문제
[Python] 이분탐색 쉽게 푸는 템플릿