알고리즘/탐색

백준[1920] 수찾기

HJ39 2023. 3. 11. 14:32

이분탐색을 이용하면 쉽게 해결할 수 있는 문제이다.

 

scanf와 printf를 대신 cin, cout을 사용하면 시간초과가 날 수도 있다.

#include <bits/stdc++.h>

int recursiveFindNumber(vector<int> &arr, int target, int start, int end){
    if(start > end) return 0;
    
    int mid = (start + end) /2;
    if( arr[mid] == target) return 1;
    else if (arr[mid] > target) return recursiveFindNumber(arr, target, start, mid-1);
    else return recursiveFindNumber(arr, target, mid+1, end);
}

void findNumber(){
    int N;
    scanf("%d",&N);
    
    vector<int> arrN;
    for(int i=0;i<N;i++){
        int n;
        scanf("%d",&n);
        arrN.push_back(n);
    }
    sort(arrN.begin(),arrN.end());
    
    int M;
    scanf("%d",&M);
    int res;
    
    for(int i=0;i<M;i++){
        int m;
        scanf("%d",&m);
            
        res = recursiveFindNumber(arrN, m, 0, N-1);
        printf("%d\n",res);
    }
}

'알고리즘 > 탐색' 카테고리의 다른 글

백준[2805] 나무 자르기 (Swift)  (0) 2023.03.19
백준[1654] 랜선 자르기 (Swift)  (0) 2023.03.19
백준[10816] 숫자 카드 2 (Swift)  (0) 2023.03.19
백준[2805] 나무 자르기  (0) 2023.03.11
백준[10816] 숫자 카드 2  (0) 2023.03.11