CS 기초 · 기초
이진 탐색(Binary Search) 알고리즘은 어떻게 동작하며, 이 알고리즘을 사용하기 위한 데이터의 전제 조건은 무엇인가요? 시간 복잡도는 어떻게 되나요?
힌트 · 이진 탐색은 정렬된 배열에서 중앙값을 기준으로 탐색 범위를 절반씩 줄여나갑니다. O(log N)의 시간 복잡도를 가집니다.
정렬된 배열중간값분할 정복로그 시간 복잡도O(log n)
모범답안
이진 탐색은 정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘입니다. 먼저 배열의 중간 값을 확인하고, 찾으려는 값과 비교합니다. 만약 중간 값이 찾으려는 값보다 크면, 탐색 범위를 왼쪽 절반으로 좁히고, 작으면 오른쪽 절반으로 좁힙니다. 이 과정을 반복하여 값을 찾거나, 탐색 범위가 없어지면 값이 없다고 판단합니다.
이 알고리즘을 사용하려면 데이터가 반드시 정렬되어 있어야 합니다.
시간 복잡도는 O(log N)입니다. 매 단계마다 탐색 범위가 절반으로 줄어들기 때문에 데이터의 크기가 커져도 탐색 시간이 매우 빠르게 증가하지 않습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 알고리즘 면접 질문
- 알고리즘의 시간 복잡도(Time Complexity)와 공간 복잡도(Space Complexity)는 무엇이며, 왜 중요하게 고려해야 하는지 설명해주세요. 특히 Big O 표기법은 무엇을 의미하나요?
- 배열(Array)과 연결 리스트(Linked List)의 주요 차이점은 무엇이며, 각각 어떤 상황에서 더 효율적인 자료구조인지 구체적인 예를 들어 설명해주세요.
- 스택(Stack)과 큐(Queue) 자료구조의 정의와 각각 LIFO(Last-In, First-Out) 및 FIFO(First-In, First-Out) 원리를 설명하고, 실제 프로그래밍에서 사용되는 예를 들어주세요.
- 버블 정렬(Bubble Sort) 알고리즘의 동작 원리를 설명하고, 이 알고리즘의 시간 복잡도와 실제 시스템 개발에서 잘 사용되지 않는 이유를 함께 설명해주세요.
- 재귀 함수(Recursive Function)는 무엇이며, 재귀 함수를 작성할 때 반드시 고려해야 할 두 가지 중요한 요소는 무엇인가요?
- 해시 테이블(Hash Table) 자료구조는 무엇이며, 해싱(Hashing)의 기본 원리와 충돌(Collision)이 발생했을 때 해결하는 일반적인 방법 두 가지를 설명해주세요.