Algorithm & Data Structure
백준 - 1920번(이진탐색)
geek_inside
2022. 2. 6. 00:53
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
반응형