알고리즘

[백준/이분탐색/C++] 10815번 숫자 카드

데메즈 2023. 1. 3. 13:30
728x90
반응형

https://www.acmicpc.net/problem/10815

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

문제 해결 방법
  • 상근이가 가지고 있는 카드를 정렬해준다
  • 이분탐색을 사용한다
#include <bits/stdc++.h>

using namespace std;

int n, m;
vector<long long int> a, b;

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n;
    for(int i=0; i<n; i++){
        long long int x;
        cin >> x;
        a.push_back(x);
    }
    sort(a.begin(), a.end());

    cin >> m;
    for(int i=0; i<m; i++){
        long long int x;
        cin >> x;
        b.push_back(x);
    }

    for(int i : b){
        int start = 0;
        int end = a.size();

        while(start<=end){
            int mid = (start + end)/2;
            int item = a[mid];

            if(item == i){
                cout << 1 << " ";
                break;
            }
            if(item < i) start = mid + 1;
            else end = mid- 1;
            if(start>end){
                cout << 0 << " ";
            }
        }
    }

    return 0;
}

 

728x90
반응형