반응형
문제
연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들어서 여러분에게 도움을 요청했다. 동규를 도와주기 위해 ‘수첩2’에 적혀있는 순서대로, 각각의 수에 대하여, ‘수첩1’에 있으면 1을, 없으면 0을 출력하는 프로그램을 작성해보자.
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int binary_search(int left, int right, int find, vector<int>& num);
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin.tie(NULL);
int tmp, memo1, memo2, test;
cin >> test;
while (test--)
{
vector <int> num;
cin >> memo1;
for (int i = 0; i < memo1; i++)
{
cin >> tmp;
num.push_back(tmp);
}
sort(num.begin(), num.end());
cin >> memo2;
for (int i = 0; i < memo2; i++)
{
cin >> tmp;
cout << binary_search(0, memo1 - 1, tmp, num) << "\n";
}
}
}
int binary_search(int left, int right, int find, vector<int>& num)
{
int mid = (left + right) / 2;
if (left > right)
return false;
else if (num[mid] == find)
return true;
else if (num[mid] < find)
return binary_search(mid + 1, right, find, num);
else
return binary_search(left, mid - 1, find, num);
}
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[ C / C++ ] 백준 2841 외계인의 기타 연주 (0) | 2022.03.29 |
---|---|
[ C / C++ ] 백준 2792 보석 상자 (0) | 2022.03.28 |
[ C / C++ ] 백준 2753 윤년 (0) | 2022.03.26 |
[ C / C++ ] 백준 2752 세수정렬 (0) | 2022.03.25 |
[ C / C++ ] 백준 2751 수 정렬하기 2 (0) | 2022.03.24 |