[백준] 1920 숫자 찾기 / 이분 탐색 (C++)

sobokii·2023년 10월 13일
0

문제풀이

목록 보기
2/52
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int n, m, l, r, mid, targetNum;
	cin >> n;
	vector<int> vNums(n);
	for (int i = 0; i < n; i++)
	{
		cin >> vNums[i];
	}

	cin >> m;
	vector<int> targetNums(m);
	for (int i = 0; i < m; i++)
	{
		cin >> targetNums[i];
	}

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

	for (int i = 0; i < m; i++)
	{
		l = 0;
		r = n-1;
		targetNum = targetNums[i];
	
    	// 탐색 범위가 0이 될 때 까지
		while(l<=r)
		{
			mid = (l+r)/2;
			if(vNums[mid] == targetNum)
			{
				cout << 1 << " ";
				break;
			}
			else if(vNums[mid] < targetNum)
			{
				l = mid + 1;
			}
			else if(vNums[mid] > targetNum)
			{
				r = mid - 1;
			}
		}

		if(r<l)
		{
			cout << 0 << " ";
		}	
	}
	
	return 0;
}
profile
직장 구하고 있습니다.

0개의 댓글