[백준/C++] 10815번 : 숫자 카드 (실버 V)

Eunho Bae·2023년 1월 18일
0

백준

목록 보기
40/40

문제링크


아이디어

sort하고 이분탐색 알고리즘으로 찾아서 있는지 여부를 0, 1로 출력하면 된다.


제출코드

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

bool found = false;

void BinarySearch(vector<int>& v, int start, int end, int subject)
{
    if (start > end)
        return;

    int mid = (end + start) / 2;
    if (v[mid] == subject)
    {
        found = true;
        return;
    }
    else if (v[mid] > subject)
        BinarySearch(v, start, mid - 1, subject);
    else
        BinarySearch(v, mid + 1, end, subject);
}

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

    int n, m;
    
    cin >> n;
    vector<int> v1(n);
    for (int i = 0; i < n; i++)
        cin >> v1[i];
    
    cin >> m;
    vector<int> v2(m);
    for (int i = 0; i < m; i++)
        cin >> v2[i];

    sort(v1.begin(), v1.end());

    for (int i = 0; i < m; i++)
    {
        found = false;
        BinarySearch(v1, 0, v1.size(), v2[i]);
        if (found)
            cout << 1 << ' ';
        else
            cout << 0 << ' ';
    }

    return 0;
}
profile
개인 공부 정리

0개의 댓글