본문 바로가기

Algorithm & Data Structure

백준 - 1920번(이진탐색)

728x90
반응형
import sys

n = int(sys.stdin.readline())
key_arr = sys.stdin.readline().strip().split()

m = int(sys.stdin.readline())
arr = sys.stdin.readline().strip().split()

for i in range(len(arr)):
    arr[i] = int(arr[i])

for i in range(len(key_arr)):
    key_arr[i] = int(key_arr[i])

key_arr.sort() #기준 배열 정렬


def binary(a,k_arr,start,end):
    if start > end:
        return 0
    m = (start + end) // 2

    if a == k_arr[m]:
        return 1
    elif a < k_arr[m]:
        return binary(a,k_arr,start,m-1)
    else:
        return binary(a,k_arr,m+1,end)


for t in arr:
    s = 0
    e = len(key_arr)-1
    print(binary(t,key_arr,s,e))

함수를 살펴보면 다음과 같다.

시작 지점이 끝 지점보다 커지면 수가 존재하지 않는 것이다.

왜냐하면 start는 m+1로 점점 커지고 end는 m-1로 점점 작아질 수밖에 없다.

조건을 만족하면 1을 반환 그렇지 않으면 재귀호출을 한다.

728x90
반응형