정렬은 처음에 한 번만 하면 됩니다. 이분 탐색을 할 때마다 매번 할 필요가 없습니다. 시간 복잡도가 O(NMlogN)입니다.
1920번 - 수 찾기
Untitled
import sys
a=int(sys.stdin.readline())
m=list(map(int,sys.stdin.readline().split()))
def chat(target,m):
start=0
end=len(x)-1
while start<=end:
mid=(start+end)//2
if target==m[mid]:
return 1
elif target<m[mid]:
end=mid-1
else:
start=mid+1
return 0
b=int(sys.stdin.readline())
x=list(map(int,sys.stdin.readline().split()))
m.sort()
for i in x:
print(chat(i,m))
이렇게 해봤습니다.
댓글을 작성하려면 로그인해야 합니다.
iwtbakgj 2년 전
이 문제를 풀기 위해 알아보던 중 이진탐색에 대해 알게 되었고, 그걸 적용해보았더니 여전히 시간초과가 나옵니다. 혹시 아시는 분은 댓글 남겨주시면 감사하겠습니다.