이 문제를 숫자 카드1처럼 순차탐색으로는 타임에러가 발생할 것이 분명해서 이진탐색으로 이문제를 접근했지만 이또한 타임에러로 또 실패했다.
하지만 이분탐색에서 벗어나 생각해보니 그냥 딕셔너리에 첫번째 리스트의 요소의 개수를 저장해주고 두번째 리스트요소들이 그 딕셔너리에 있는지 비교하면서 출력만해준다면 시간 복잡도는 O(n)밖에 안되기 때문에 시도해봤다.
소스코드
#입력
#첫째줄 입력받고자하는 리스트의 크기 N
#둘째줄 리스트값들을 공백으로 구분하여 입력
#셋째줄 찾고자하는 값들의 개수 M
#넷째줄 찾고자하는 값들의 공백으로 구분하여 입력
import sys
N = int(input())
input_list = list(map(int, sys.stdin.readline().split()))
M = int(input())
search_list = list(map(int, sys.stdin.readline().split()))
#input_list의 요소들의 개수 딕셔너리에 저장해주기
my_dict = dict()
input_list.sort()
for i in input_list:
if i in my_dict:
my_dict[i] += 1
else:
my_dict[i] = 1
for i in search_list:
if i in my_dict:
print(my_dict[i] ,end = ' ')
else:
print(0, end = ' ')
너무 이분탐색만을 생각하며 했더니 시간이 오래결렸다.