본문 바로가기
이론/코딩테스트

[백준] 1920번 수 찾기 (이분탐색)

by 퇴근후개발 2022. 7. 30.
반응형

-문제

 

-코드

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int n, m;
	scanf("%d", &n);
	vector<int> a(n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	scanf("%d", &m);
	vector<int> b(m);
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &b[i]);
	}

	sort(a.begin(), a.end());

	int k, lt, rt, mid;
	vector<int> res(m);
	for (int i = 0; i < m; i++)
	{
		k = b[i];
		lt = 0;
		rt = n - 1;
		while (lt<=rt)
		{
			mid = (lt + rt) / 2;
			if (a[mid] == k)
			{
				res[i] = 1;
				break;
			}
			else if (a[mid] > k) rt = mid - 1;
			else lt = mid + 1;
		}
	}

	for (int i = 0; i < m; i++)
	{
		printf("%d\n", res[i]);
	}
	return 0;
}
반응형