답
- 천만계이상이라 이진탐색으로하는게 좋다
- 계수정렬로도 충분히구현가능하다(시간복잡도는 낮으나 메모리많이소요)
- 그냥 반복문 쓸꺼면 set을 이용하는편이 낫다.
search함수에서 Return을 안해주는 오류를 범했다.
return 을안해주면 재귀에서의 응답이 최종적으로 도출이안된다.
import sys
n = int(sys.stdin.readline().strip())
narr = list(map(int, sys.stdin.readline().strip().split()))
m = int(sys.stdin.readline().strip())
marr = list(map(int, sys.stdin.readline().strip().split()))
narr.sort()
def search(num,start,end):
if start > end:
return False
mid = (start+end)//2
if narr[mid] == num:
return True
elif narr[mid] < num :
return search(num,mid+1,end)
return search(num,start,mid-1)
ans = []
for ma in marr:
tmp = 'yes' if search(ma,0,n-1) else 'no'
ans.append(tmp)
print(" ".join(ans))