42. 이분검색

zzzzwso·2023년 9월 10일
0

문제 설명

임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요.

입력 설명

첫 줄에 한 줄에 자연수 N(3<=N<=1,000,000)과 M이 주어집니다.
두 번째 줄에 N개의 수가 공백을 사이에 두고 주어집니다.

출력 설명

첫 줄에 정렬 후 M의 값의 위치 번호를 출력한다

내 풀이

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

int main()
{
	int n, m;
	vector<int> v;
	cin >> n>>m;
	for (int i = 0; i < n; i++)
	{
		int x;
		cin >> x;
		v.push_back(x);
	}
	sort(v.begin(), v.end());
	for (int i = 0; i < v.size(); i++)
	{
		if (v[i] == m)
			cout << i + 1;
	}
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	int n, key,lt=0,rt,mid;
	cin >> n >> key;
	vector<int> v(n);
	for (int i = 0; i < v.size(); i++)
	{
		cin >> v[i];
	}
	sort(v.begin(), v.end());
	rt = n - 1;
	while (lt <= rt)
	{
		mid = (lt + rt) / 2;
		if (v[mid] == key)
		{
			cout << mid + 1;
			return 0;
		}
		else if (v[mid] > key)
			rt = mid - 1;
		else
			lt = mid + 1;
	}
}
profile
HI there

0개의 댓글