단순 비교 문제라고 판단하였고 이중 반복문을 이용해서 서로 비교하여 가지고 있는 카드라면 1을 추가했고 가지고 있지 않은 카드라면 0을 추가하는 방식으로 코드를 작성했으나 시간 초과가 발생했다.
import sys
N = int(input())
own_card = list(map(int, sys.stdin.readline().split()))
M = int(input())
number_lst = list(map(int, sys.stdin.readline().split()))
lst = []
for i in number_lst:
for j in own_card:
if i == j:
lst.append(1)
break
else:
lst.append(0)
print(*lst)
상근이가 가지고 있는 숫자 카드에 적혀있는 수는 같은 수가 적혀있는 경우는 없다고 했으므로
list
객체가 아닌set
객체로 변환해주면 시간 효율성이 증대된다.
import sys
N = int(input())
own_card = set(map(int, sys.stdin.readline().split()))
M = int(input())
number_lst = list(map(int, sys.stdin.readline().split()))
lst = []
for i in number_lst:
if i in own_card:
lst.append(1)
else:
lst.append(0)
print(*lst)
이 문제의 알고리즘 분류를 참고했는데 관련 알고리즘으로 '이분 탐색'이 눈에 띄었다. 이분 탐색을 이용해서 코드를 어떻게 짜야할지 좀 더 시간을 가지고 고민해보면서 작성해보자.