알고리즘 문제풀기/인프런 강의 정답

42. 이분검색 [정렬 & 이분탐색(결정알고리즘) & 투포인트 알고리즘 & 스택]

코다람쥐 2022. 4. 14. 10:29

나의정답.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc, char** argv) {
	freopen("input.txt", "rt", stdin);
	
	int n, target, i, j, idx, tmp, lt, rt, mid;
	scanf("%d %d", &n, &target);
	
	vector<int> a(n);
	lt = 0;
	rt = n - 1;
	mid = (lt + rt) / 2;
	for(i = 0; i < n; i++)
		scanf("%d", &a[i]);
	
	for(i = 0; i < n - 1; i++){
		idx = i;
		for(j = i + 1; j < n; j++)
			if(a[idx] > a[j]) idx = j;
		tmp = a[i];
		a[i] = a[idx];
		a[idx] = tmp;
	}
	
	while(lt <= rt){
		if(target > a[mid])	lt = mid + 1;
		else if(target < a[mid]) rt = mid - 1;
		else {
		printf("%d", mid + 1); return 0;	}
		mid = (lt + rt) / 2;
	}
	
	printf("invalid number");
}