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
반응형
'Algorithm & Data Structure' 카테고리의 다른 글
Heap 자료구조 (0) | 2022.02.19 |
---|---|
백준 - 10816번(이진탐색) (0) | 2022.02.06 |
백준 - 11401번(재귀,이항계수, 페르마 소정리) (0) | 2022.02.05 |
백준 - 10830(재귀, 분할정복) (0) | 2022.02.04 |
백준 - 1629번(분할정복, 분할곱) (0) | 2022.02.03 |