코딩테스트/백준
1920번 수 찾기 - 이진탐색(이분탐색)
marmelo12
2021. 9. 8. 14:35
반응형
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> data2;
vector<int> serch;
vector<bool> check;
void BinarySerch()
{
int mid;
int left = 0;
int right = data2.size() - 1;
static int idx = 0;
int value = serch[idx];
while (left <= right)
{
mid = (left + right) / 2;
if (data2[mid] == value)
{
check[idx] = true;
value = serch[idx];
break;
}
if (data2[mid] > value)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
idx++;
}
int main(void)
{
int N,a;
cin >> N;
data2.reserve(N + 1);
serch.reserve(N + 1);
check.resize(N + 1);
for (int i = 0; i < N; ++i)
{
cin >> a;
data2.push_back(a);
}
sort(data2.begin(), data2.end());
cin >> N;
for (int i = 0; i < N; ++i)
{
cin >> a;
serch.push_back(a);
}
int i = 0;
while (i != N)
{
BinarySerch();
++i;
}
for (int i = 0; i < N; ++i)
cout << check[i] << " ";
return 0;
}
반응형