하루동안 본 정수들을 수첩 1에 적어두고 M 개의 질문을 한다고 한다.
수첩 1에 적어둔 X 라는 정수를 오늘 본적이 있는가?
결국 찾고자 하는 값이 수첩 1에 있으면 1을 ,없으면 0 을 출력하면 된다.
나는 가장 먼저 N의 범위를 봤다
1<=N <= 1000000 으로 최대값이 100만이다.
그래서 나는 0(N) 의 효율을 내는 알고리즘을 짜도 무방할것 같았다.
처음 수첩 1에 적힌 N개의 수를 Unorder_map 을 사용하여 Cnt를 증가시켜줬고
다음 수첩 2에 적힌 수들을 인덱스접근을 통하여 값이 1 이상이면 1 0 이면 0 을 출력하도록 했다
#include <iostream>
#include <unordered_map>
using namespace std;
int T;
int N,M;
unordered_map<int, int> q;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> T;
for(int i=0;i<T;i++) {
q.clear();
cin >> N;
for(int j=0;j<N;j++) {
int data;
cin >> data;
q[data]+=1;
}
cin >> M;
for(int j=0;j<M;j++) {
int data;
cin >> data;
if(q[data]>=1) {
cout << 1 << "\n";
}
else {
cout << 0 << "\n";
}
}
}
return 0;
}