알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 이진 탐색

2023. 12. 8. 15:50·ALGORITHM

05-3 이진 탐색

- 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘

- 대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾음

- 시간복잡도: O(logN)

 

이진 탐색의 핵심 이론

이진 탐색 과정(오름차순 기준)

1. 현재 데이터셋의 중앙값을 선택한다.

2. 중앙값 > 타겟 데이터일 때 중앙값 기준으로 왼쪽 데이터셋을 선택한다.

3. 중앙값 < 타겟 데이터일 때 중앙값 기준으로 오른쪽 데이터셋을 선택한다.

4. 과정 1~3을 반복하다가 중앙값 == 타깃 데이터일 때 탐색을 종료한다.

오름차순 정렬돼 있을 때

구현

# 재귀 활용
def binary_search(target, start, end):
	if start > end:
    	return -1
    
    mid = (start + end) // 2
    
    if data[mid] == target:
    	return mid
        
    elif data[mid] > target:
    	end = mid - 1
    
    elif data[mid] < target:
    	start = mid + 1
   
   return binary_search(target, start, end)
 
def solution(target, data):
	data.sort()
    start = 0
    end = len(data) - 1
    return binary_search(target, start, end)

참고 사이트

반응형

'ALGORITHM' 카테고리의 다른 글

알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 소수 구하기  (0) 2023.12.09
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 그리디 알고리즘  (0) 2023.12.09
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - BFS  (0) 2023.12.08
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - DFS  (1) 2023.12.08
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 기수 정렬  (0) 2023.12.07
'ALGORITHM' 카테고리의 다른 글
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 소수 구하기
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 그리디 알고리즘
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - BFS
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - DFS
진미
진미
  • 진미
    ABC
    진미
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • PROJECT (3)
      • ALGORITHM (43)
      • STUDY (3)
        • 리액트 (7)
        • 파이썬 (2)
      • 기타 (5)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 설정
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
진미
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 이진 탐색
상단으로

티스토리툴바