본문 바로가기

코딩테스트 문제풀이

[python3] 이진탐색 기초

728x90

 

다음 그림과 같이 시작점과 끝점을 정해놓고 중간값을 구한다.

중간값이 targeting 한 값과 일치한다면 return 

아니라면 target한 값 보다 더 큰지 작은지 판별하여

재귀함수로 다시 return 해주면 된다

 

def binary_search(target,array,start,end):
    
    if end<start:
        return "none"
    mid=(start+end)//2

    if target==array[mid]:
        return mid
    elif target<array[mid]:
        return binary_search(target,array,start,mid-1)
    else:
        return binary_search(target,array,mid+1,end)



size,target=map(int,input().split())


array=list(map(int,input().split()))

print(binary_search(target,array,0,size-1))
728x90