import sys
input = sys.stdin.readline
n = int(input())
array_n = sorted(list(map(int,input().split())))
m = int(input())
array_m = list(map(int,input().split()))
def binary_search(array,target,start,end):
while start <= end:
mid = (start+end)//2
if array[mid] == target:
return 1
elif array[mid] > target:
end = mid - 1
else:
start = mid + 1
return 0
for i in array_m:
print(binary_search(array_n,i,0,n-1))
이번 문제는 이전에 정렬 알고리즘에서 다루었지만, 출제자가 원하는 것은 이분 탐색 알고리즘을 사용하여 푸는 것이고 무엇보다 이진탐색을 연습하기 위해서 다시 한번 풀이하게 되었다 :)
이진 탐색 문제를 풀이할 때 리스트를 사용하기에 앞서 먼저 정렬시켜야 한다는 점을 잊지 말도록 하자 !
'Algorithm 💡 > BinarySearch' 카테고리의 다른 글
[BinarySearch] 이진 탐색 알고리즘 개념 및 코드 정리 (0) | 2023.02.23 |
---|---|
[백준 10815번] 숫자 카드 (0) | 2023.02.23 |
[백준 10816번] 숫자 카드 2 (0) | 2023.02.22 |