반응형
안녕하세요 logro 입니다 :)
오늘은 많은 알고리즘 문제에서 자주 등장하는 이진 탐색(Binary Search)을 쉽게 배워볼 거예요!
"탐색"이라고 하면 뭔가 어렵고 무거운 느낌이 들 수 있지만, 실제로는 "정렬된 목록에서 빠르게 찾는 방법" 정도로 이해하면 OK! 👌
🧠 이진 탐색이란?
이진 탐색은 정렬된 데이터에서 원하는 값을 찾을 때 사용하는 알고리즘이에요.
핵심 아이디어는 간단해요:
"가운데 값을 확인하고, 내가 찾는 값이 더 작으면 왼쪽에서, 더 크면 오른쪽에서 다시 찾자!"
무작정 처음부터 끝까지 찾는 **선형 탐색(linear search)**보다 훨씬 빠르답니다! 😎
🎯 언제 써야 할까?
- 데이터가 정렬되어 있을 때만!
- 빠르게 값을 찾고 싶을 때
- 예: 정렬된 숫자 리스트, 사전 순 정렬된 문자열 등
🔍 이진 탐색 흐름 이해하기
비유를 하나 들어볼게요!
당신이 100페이지짜리 책에서 "42페이지"를 찾고 있다고 해요.
- 처음엔 중간인 50페이지를 펼쳐봐요.
- "오, 42보다 크네? 그럼 왼쪽(1~49쪽)에 있을 거야!"
- 다시 그 구간의 중간인 25페이지를 봐요.
- "이번엔 작네? 그럼 오른쪽(26~49쪽)을 보자!"
- 이 과정을 반복하면 금방 42페이지를 찾을 수 있어요 🧐
🧪 코드로 확인해볼까요?
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2 # 가운데 인덱스
if arr[mid] == target:
return mid # 찾았다!
elif arr[mid] < target:
left = mid + 1 # 오른쪽으로 이동
else:
right = mid - 1 # 왼쪽으로 이동
return -1 # 못 찾았을 때
🧑💻 예시:
numbers = [1, 3, 5, 7, 9, 11, 13]
print(binary_search(numbers, 7)) # 출력: 3
7은 인덱스 3에 있으니 맞죠? 🎉
⏱️ 시간 복잡도는?
탐색 방법 | 시간 복잡도 |
선형 탐색 | O(n) |
이진 탐색 | O(log n) |
즉, 1,000,000개의 데이터가 있어도 20번 이하의 비교만으로 찾을 수 있어요! 😲
알고리즘의 속도를 말해주는 마법의 도구, 시간 복잡도란?
알고리즘의 속도를 말해주는 마법의 도구, 시간 복잡도란?
안녕하세요 logro 입니다 :)오늘의 개념은 알고리즘을 공부할 때 절대 빼놓을 수 없는 시간 복잡도(Time Complexity) 에 대한 이야기예요. 처음에는 좀 생소하고 어렵게 느껴질 수 있지만, 막상 알고 보
commutemochabread.tistory.com
🧩 정리!
- 이진 탐색은 정렬된 리스트에서만 가능
- 가운데를 기준으로 탐색 범위를 반씩 줄이기
- 시간 복잡도는 O(log n), 매우 효율적!
- 면접, 코딩 테스트 단골 개념 🎯
📝 이진 탐색은 다양한 알고리즘의 기반이 되는 아주 중요한 개념이에요.
처음에는 헷갈릴 수 있지만, 직접 구현해보면 금방 익숙해질 거예요.
반응형
'IT > 알고리즘 & 자료구조' 카테고리의 다른 글
'퀵'하게 정렬한다고? 빠르고 똑똑한 정렬 알고리즘, 퀵 정렬(Quick Sort)!🏎️ (0) | 2025.03.28 |
---|---|
데이터 지문을 만드는 마법? 해시 알고리즘의 세계! (2) | 2025.03.28 |
자기 자신을 부르는 함수? 재귀함수 쉽게 이해하기! (0) | 2025.03.28 |
알고리즘의 속도를 말해주는 마법의 도구, 시간 복잡도란? (0) | 2025.03.28 |
정렬 알고리즘 3형제 비교하기 🧼🧢🖊️: 버블 vs 선택 vs 삽입 (0) | 2025.03.28 |