알고리즘/탐색
백준[1920] 수찾기
HJ39
2023. 3. 11. 14:32
이분탐색을 이용하면 쉽게 해결할 수 있는 문제이다.
scanf와 printf를 대신 cin, cout을 사용하면 시간초과가 날 수도 있다.
#include <bits/stdc++.h>
int recursiveFindNumber(vector<int> &arr, int target, int start, int end){
if(start > end) return 0;
int mid = (start + end) /2;
if( arr[mid] == target) return 1;
else if (arr[mid] > target) return recursiveFindNumber(arr, target, start, mid-1);
else return recursiveFindNumber(arr, target, mid+1, end);
}
void findNumber(){
int N;
scanf("%d",&N);
vector<int> arrN;
for(int i=0;i<N;i++){
int n;
scanf("%d",&n);
arrN.push_back(n);
}
sort(arrN.begin(),arrN.end());
int M;
scanf("%d",&M);
int res;
for(int i=0;i<M;i++){
int m;
scanf("%d",&m);
res = recursiveFindNumber(arrN, m, 0, N-1);
printf("%d\n",res);
}
}