본문 바로가기

Algorithm/Binary Search

(C++) - 백준(BOJ) 2776번 : 암기왕 답

반응형

www.acmicpc.net/problem/2776

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,

www.acmicpc.net

입출력이 많기 때문에 c의 헤드들과 동기화를 끊어줘야 합니다. 그 후 이분탐색하시면 됩니다.

 

 

풀이방법

 찾았다면 flag = 1로 만들어주고 찾기 못했다면 flag가 초기값 그대로인 0이므로 이분탐색 시행 후 flag를 return 해주면 됩니다.

Code

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); 
using namespace std;

int binarySearch(int x,int n,vector <int> &num){
    int l = 0;
    int r = n-1;
    int flag = 0;
    while(l<=r){
        int mid = (l+r)/2;
        if(num[mid] >x){
            r = mid - 1;
        }else if(num[mid] < x){
            l = mid + 1;
        }else{
            flag = 1;
            break;
        }
    }
    return flag;
}

int main(){
    fastio;
    int t;
    cin >> t; 
    while(t--){
        int n,n2;
        cin >> n;
        vector <int> num(n);
        for(int i = 0; i < n; i++) cin >> num[i];
        sort(num.begin(),num.begin()+n);
        cin >> n2;
        for(int i = 0; i < n2; i++){
            int x;
            cin >> x;
            cout << binarySearch(x,n,num) <<'\n';
        }
    }
}