[백준]1920_수 찾기

🐈 JAELEE 🐈·2021년 9월 5일

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

Solved

✔ 이분탐색

bool flag=false;
while(left<=right) {
	int mid = (left+right)/2;
    if(v[mid]==x) flag=true, break;
    else if( v[mid]<x) left=mid+1;
    else right = mid-1;
}
cout<<flag<<'\n';

✔ n 개의 수 중 특정 수 k가 있는지 찾아라 → 이분탐색

using namespace std;
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n, m, x;

	cin >> n;
	vector<int> v(n);
	for (int i = 0; i < n; i++)
		cin >> v[i];
	sort(v.begin(), v.end());

	cin >> m;
	for (int i = 0; i < m; i++) {
		cin >> x;
		int left = 0, right = n - 1;
		bool flag = false;

		while (left <= right) {
			int mid = (left + right) / 2;
			if (v[mid] == x) {
				flag = true;
				break;
			}
			else if (v[mid] < x)
				left = mid + 1;
			else  // x<v[mid]
				right = mid - 1;
		}
		cout << flag << '\n';
	}

}

0개의 댓글