🍧 μ½”λ”©ν…ŒμŠ€νŠΈ

[μΈν”„λŸ° C++] 42. 이뢄검색(이진 탐색)

peewoong 2024. 5. 7. 20:46

🍧 문제

μž„μ˜μ˜ N개의 μˆ«μžκ°€ μž…λ ₯으둜 μ£Όμ–΄μ§‘λ‹ˆλ‹€.

N개의 수λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œ λ‹€μŒ N개의 수 쀑 ν•œ 개의 수인 M이 μ£Όμ–΄μ§€λ©΄ μ΄λΆ„κ²€μƒ‰μœΌλ‘œ M이 μ •λ ¬λœ  μƒνƒœμ—μ„œ λͺ‡ λ²ˆμ§Έμ— μžˆλŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

 

✨ 1트 (성곡)

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

int main(void){
	freopen("input.txt", "rt", stdin);
	
	int n, m;
	cin >> n >> m;
	vector<int> a(n);
	
	for(int i = 0; i < n; ++i){
		cin >> a[i];
	}
	
	sort(a.begin(), a.end());
	
	int left = 0;
	int right = n-1;
	int mid;
	
	while(left <= right){
		mid = (left + right) / 2;
		
		if(a[mid] == m){
			cout << mid + 1;
			break;
		}
		else if(a[mid] > m){
			right = mid - 1;
		}
		else{
			left = mid + 1;
		}
	}
	
	return 0;
}