알고리즘 문제풀기/인프런 강의 정답
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");
}