bdfgdfg

1920번 수 찾기 - 이진탐색(이분탐색) 본문

코딩테스트/백준

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;
}
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

2480번, 2525번  (0) 2021.09.17
3046번,5564번,8393번  (0) 2021.09.12
2845번, 2914번, 3003번  (0) 2021.09.09
1000,1001,1550번 문제  (0) 2021.09.08
sovled.ac  (0) 2021.09.08
Comments