문제
전자 매장에는 부품이 N개 있다.
어느날 손님이 M개 종류의 부품을 구매하려고 한다.
이 때 매장에서 손님이 사려고 하는 부품이 있는지 yes와 no 형태로 구하라.
예시
입력 :
array = [9, 3, 7, 9, 2]
target = [5, 7, 9]
결과 : no yes yes
풀이
이 문제는 여러 풀이를 사용할 수 있는데 그 중 이분탐색을 이용하여 문제를 풀어보았다. 이분탐색을 진행하기 위해서는 먼저 리스트가 정렬되어 있어야 함으로 리스트를 정렬해준다. 이후 이분탐색 함수를 정의해주고 원하는 값을 찾으면 그 값을 리턴하고 아니면 None을 리턴한다.
이후 for문으로 찾는 부품의 리스트를 돌리면서 정의한 이분탐색 함수에 값을 넣어 None이면 no 아니면 yes를 출력한다.
풀이 코드
n = int(input())
A = list(map(int,input().split()))
A.sort()
m = int(input())
B = list(map(int,input().split()))
def binary(arr,target,start,end):
while start <= end:
mid = (start+end) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
start = mid + 1
else:
end = mid -1
return None
for i in B:
result = binary(A, i, 0, n-1)
if result != None:
print('yes', end=' ')
else:
print('no',end = ' ')