본문 바로가기

알고리즘/Do it! 알고리즘 코딩테스트 (파이썬)

[9일차] 05 탐색 : 05-3 이진 탐색

728x90

함께 푼 문제

 

[백준 / 이진 탐색] 10815 : 숫자 카드 (python)

문제 설명 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지

delicious-kimchi.tistory.com

 

이진 탐색

데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘.
대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다.
  • 시간 복잡도 : O(logN)
  • 데이터가 정렬돼 있어야 함

이진 탐색 과정

 

파이썬 구현

A = [4, 8, 10, 5, 2, 7, 6, 3, 9, 1]

A.sort() # **데이터 정렬**

start = 0
end = len(A) - 1

find = 2   # 찾을 값

while start <= end:
    mid = (start + end) // 2
    if A[mid] < find:
        start = mid + 1
    elif A[mid] > find:
        end = mid - 1
    else:
        print(A[mid]) # 2
        break # 값 찾으면 종료
반응형