풀이

λ‹¨μˆœ μ„ ν˜• νƒμƒ‰μœΌλ‘œ μ°ΎλŠ” 방식은 μ‹œκ°„λ³΅μž‘λ„κ°€ λ†’μ•„ ν’€ 수 μ—†λ‹€. λ‹€μŒμ˜ λ°©λ²•μœΌλ‘œ 이진 탐색을 선택할 수 μžˆλ‹€. μ•„λž˜μ²˜λŸΌ μž¬κ·€μ μΈ λ°©μ‹μœΌλ‘œ ν’€μ΄ν–ˆλ‹€. ν•˜μ§€λ§Œ κ²½ν—˜μƒ μž¬κ·€μ μΈ 방식은 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•œ 방식에 λΉ„ν•΄ μ‹œκ°„λ³΅μž‘λ„κ°€ 더 λ†’κ²Œ μΈ‘μ •λ˜λŠ” κ²½μš°κ°€ λ§Žλ‹€. μΌλ°˜μ μœΌλ‘œλŠ” λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•œ 이진 탐색 방식을 μ‚¬μš©ν•˜μž.

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
 
LL N, M;
int res, check = 0, idx = 0;
vector<int> vec;
 
 
int search(vector<int>& v, int num, int s, int e){
    if (s > e) return 0;
 
    int mid = (s + e) / 2;
 
    if (v[mid] == num) return 1;
    else if (v[mid] > num) return search(v, num, s, mid-1);
    else return search(v, num, mid+1, e);
}
 
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
 
    cin >> N;
    int ins = 0;
    int val;
    for(int i=0; i<N; i++){
        cin >> val;
        vec.push_back(val);
    }
    sort(vec.begin(), vec.end());
 
    cin >> M;
 
    while (M--) {
        res = 0;
        cin >> val;
        res = search(vec, val, 0, vec.size()-1);
        if (res) cout << 1 << '\n';
        else cout << 0 << '\n';
    }
    
 
    return 0;
}