백준

백준 1920 수 찾기 c++

2024. 3. 14. 15:40

 

 

 

처음 작성한 코드는 다음과 같다.

하지만 시간 초과 오류가 발생했다.

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

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int n;
    cin >> n;
    
    vector<int> arr(1000000);
    for(int i=0; i<n; i++)
        cin >> arr[i];
    
    sort(arr.begin(), arr.end());
    
    int m;
    cin >> m;
    
    vector<int> target(1000000);
    for(int i=0; i<m; i++)
        cin >> target[i];    
    
    for(int i=0; i<m; i++){
        int left = 0, right = n-1;
        while (left <= right){
            int mid = (left + right) / 2; //중앙값 초기화           
            if (arr[mid] == target[i]){
                cout << 1 << "\n";
                break;
            }
            else if (arr[mid] > target[i]){
                right = mid - 1;
            }
            else{
                left = mid + 1;
            }
        }
        cout << 0 << "\n";
    }
    
    return 0;
}

 

 

 

내가 작성한 함수로 시도했으나 자꾸 오류가 떠서

#include <algorithm>의 binary_search 함수를 사용해 해결했다.

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 2468 안전 영역 c++  (0) 2024.03.20
백준 10816 숫자 카드 2 c++  (0) 2024.03.14
백준 1431 시리얼 번호 c++  (0) 2024.03.13
백준 10825 국영수 c++  (0) 2024.03.13
백준 11659 구간 합 구하기 4 c++  (0) 2024.03.12