#이진 탐색을 하기 전에는 반드시 자료를 미리 정렬해야 한다.
def binary_search(a, x):
start = 0
end = len(a) - 1
while start <= end:
mid = (start + end) // 2
if a[mid] > x:
end = mid - 1
elif a[mid] < x:
start = mid + 1
elif a[mid] == x:
return 1
return 0
n = int(input())
a = list(map(int, input().split()))
a.sort()
m = int(input())
nums = list(map(int, input().split()))
for i in range(m):
#이진 탐색 대상 배열과 비교할 값을 가진 배열의 길이만큼 비교한다.
print(binary_search(a, nums[i]))
위 문제는, 비교를 함에 있어서 이중 반복문을 사용하게 될 경우 런타임 에러가 발생합니다.
따라서, 배열 요소를 비교함에 있어서 효율적인 방식인 이진 탐색 알고리즘을 활용하여 문제를 해결할 수 있었습니다.
이진 탐색 알고리즘 내용에 대해서도 포스팅을 한번 하도록 하겠습니다.