N = int(input())
Arr = list(map(int, input().split()))
M = int(input())
Find = list(map(int, input().split()))
for f in Find:
if f in Arr:
print(1)
else:
print(0)
Time Complexity: O(n^2)
Find 내부 원소 f에 대해 Arr을 순회
시간초과 발생
N = int(input())
Arr = list(map(int, input().split()))
M = int(input())
Find = list(map(int, input().split()))
Arr.sort()
def bsearch(target):
"""
target: number to find in Arr
return: None
print 1 if target in Arr
print 0 if target not in Arr
"""
start = 0
end = N-1
while start<=end:
mid = (start+end)//2
if Arr[mid]==target:
print(1)
return
elif Arr[mid]<=target:
start = mid+1
else:
end = mid-1
print(0)
return
for f in Find:
bsearch(f)
Time Complexity: O(nlogn)
Binary Search의 Time Complexity는 log n
Find 내부 원소에 대해 bsearch 진행 - n log n