1920번 문제는 간단한 수 찾기 문제이다.
처음 문제를 풀고 채점 했을 때 시간 초과가 발생하였다. 원인을 찾아보니 list 때문이었다. list를 탐색하여 원소를 찾을 때, 순서가 있는 list의 특성 상 순차적으로 원소를 찾아가므로 최악의 시간 복잡도가 O(n)이 된다. 이 때문에 특정 케이스에서 시간 초과가 발생 할 수 있다.
시간 초과 문제는 list 대신 set을 이용하여 문제를 풀면 해결된다. set은 순서가 없으며, 원소를 찾기위해 탐색할 때 시간 복잡도가 O(1)이기 때문에 list보다 탐색 시간이 짧다.
# N값 입력
input()
# N개의 수 입력 및 저장
arr1 = set(input().split())
# M값 입력
input()
# M개의 수 입력 및 저장
arr2 = input().split()
# 숫자 존재 유무 확인
for m in arr2:
if m in arr1:
print(1)
else:
print(0)
# N값 입력
input()
# N개의 수 입력 및 저장
arr = set(input().split())
# M값 입력
input()
# M개의 수 입력 및 존재 유무 확인
for m in input().split():
print(1) if m in arr else print(0)