import sys
sys.stdin = open('input.txt', 'rt')
input = sys.stdin.readline
N = int(input())
n_list = list(map(int, input().split()))
M = int(input())
m_list = list(map(int, input().split()))
answer = []
for m in m_list:
if m in n_list:
answer.append(1)
else:
answer.append(0)
for a in answer:
print(a, end=" ")
너무 쉬워서 풀면서도 이렇게 푸는게 아니구나 생각을 했다. 역시 시간초과 발생..
어차피 탐색문제니 이분 탐색으로 구하면 될 것 같다.
import sys
sys.stdin = open('input.txt', 'rt')
input = sys.stdin.readline
N = int(input())
n_list = list(map(int, input().split()))
M = int(input())
m_list = list(map(int, input().split()))
answer = []
n_list.sort()
for m in m_list:
start = 0
end = len(n_list) - 1
answer = 0
while start <= end:
middle = (start + end) // 2
if n_list[middle] == m:
answer = 1
break
elif n_list[middle] < m:
start = middle + 1
else:
end = middle - 1
print(answer, end=" ")
리스트가 2개 만들어지는데 첫번째 리스트만 정렬해서 이분 탐색을 해주면 된다.
이분 탐색은 정렬된 배열에서만 사용할 수 있으므로 일단 비교해야할 첫번 째 배열을 정렬해준다.
answer에 0을 초기화 해주고 값이 있을 경우에만 answer에 1을 대입한다. 배열에서 찾아야 하므로 end는 배열 길이의 -1 을 해준다.