알고리즘

C++ 알고리즘 - 백준 1920 수 찾기 (이진탐색 알고리즘)

마루설아 2024. 12. 30. 19:38

https://www.acmicpc.net/problem/1920

 

#include <iostream>
#include <vector>
#include <algorithm>
#define endl "\n"

using namespace std;

int main(void) {
	// C++ Init
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int input1, input2;
	int num1, num2;

	int front, back, mid;

	vector<int> v;

	cin >> input1;
	for (int i = 0; i < input1; i++) {
		cin >> num1;
		v.push_back(num1);
	}

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

	cin >> input2;
	for (int i = 0; i < input2; i++) {
		cin >> num2;
		
		front = 0;
		back = input1 - 1;

		while (front <= back) {
			mid = (front + back) / 2;

			if (v[mid] == num2) {
				cout << 1 << endl;
				break;
			}

			else if (v[mid] > num2) {
				back = mid - 1;
			}

			else if (v[mid] < num2) {
				front = mid + 1;
			}
		}

		if (front > back) cout << 0 << endl;
	}
}