단순하게 배열에 있는지 없는지를 따지게 되면 시간초과가 뜨는 문제이다.
탐색 중, 이분탐색을 사용하여 풀면 빠르다.
문제 해결을 위해 이분탐색하는 함수를 만들어주었다. return값은 인덱스를 뽑아낸다.
n = int(input())
ns = list(map(int,input().split()))
m = int(input())
ms = list(map(int,input().split()))
ns.sort()
# 이분탐색 함수
def bin_search(target, arr):
start = 0
end = len(arr)-1
while start <= end:
mid = (start+end)//2
if arr[mid] == target:
return mid
elif arr[mid]>target:
end = mid-1
else:
start = mid+1
return None
for i in ms:
idx = bin_search(i,ns)
if idx != None:
print(1)
else:
print(0)
'백준' 카테고리의 다른 글
숫자 카드 - 10815번 (0) | 2022.09.17 |
---|---|
숫자 카드 2 - 10816번 (0) | 2022.09.16 |
A → B - 16953번 (0) | 2022.09.14 |
AC - 5430번 (0) | 2022.09.13 |
주유소 - 13305 (0) | 2022.09.12 |
댓글