문제

문제 링크

어떻게 접근할 것인가?

  • 카드가 겹치지 않으므로 binary tree로 구현되어있는 set의 함수를 사용해도 되고
  • 찾는 시간을 줄이기 위해 이분탐색을 활용해도 된다.
  • 근데 확실히 이분탐색을 이용했을 때 빠르다.

set 활용 코드

#include <cstdio>
#include <set>

using namespace std;

int main(){
    long long n, m, x;
    set<long long> s;
    scanf("%lld", &n);
    while(n--){
        scanf("%lld", &x);        
        s.insert(x);
    }
    scanf("%lld", &m);
    while(m--){
        scanf("%lld", &x);
        if(s.find(x) != s.end())printf("1 ");
        else printf("0 ");
    }
}

이분탐색 활용 코드

#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    long long n, m, x;
    vector<long long> v;
    scanf("%lld", &n);
    while(n--){
        scanf("%lld", &x);        
        v.push_back(x);
    }
    sort(v.begin(), v.end());
    scanf("%lld", &m);
    while(m--){
        scanf("%lld", &x);
        if(binary_search(v.begin(), v.end(), x))printf("1 ");
        else printf("0 ");
    }
}