반응형
입출력이 많기 때문에 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';
}
}
}
'Algorithm > Binary Search' 카테고리의 다른 글
(C++) - 백준(BOJ) 6236번 : 용돈 관리 (0) | 2021.03.18 |
---|---|
(C++) - 백준(BOJ) 7795번 : 먹을 것인가 먹힐 것인가 (0) | 2021.03.12 |
(C++) - 백준(BOJ) 1756번 : 피자 굽기 답 (0) | 2021.01.24 |
(C++) - 백준(BOJ) 2428번 : 표절 답 (0) | 2021.01.19 |
(C++) - 백준(BOJ) 2343번 : 기타 레슨 답 (0) | 2021.01.19 |