반응형
문제
해설
이진탐색으로 해결하였으며 이분탐색은 정렬이 되어있어야 가능하다.
코드
#include<iostream>
#include<algorithm>
using namespace std;
int n[100001];
int m[100001];
int binarysearch(int low, int high, int target) {
if (low > high) return 0;
else {
int mid = (low + high) / 2;
if (n[mid] == target) return 1;
else if (n[mid] > target)
return binarysearch(low, mid - 1, target);
else
return binarysearch(mid + 1, high, target);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int x;
cin >> x;
for (int i = 0; i < x; i++) cin >> n[i];
sort(n, n + x);
int y;
cin >> y;
for (int i = 0; i < y; i++) {
cin >> m[i];
cout << binarysearch(0, x - 1, m[i]) << '\n';
}
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int N, M;
int arr[500001];
int srch[500001];
int main()
{
ios::sync_with_stdio(false);
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
cin >> M;
for (int j = 0; j < M; j++)
{
cin >> srch[j];
}
sort(arr, arr + N);
for (int h = 0; h < M; h++)
{
if (binary_search(arr, arr + N, srch[h])) //binary_search 함수 사용
cout << '1' << ' ';
else
cout << '0' << ' ';
}
cout << '\n';
return 0;
}
반응형
'Development > Algorithm' 카테고리의 다른 글
[BOJ] 10828. 스택 (0) | 2020.10.17 |
---|---|
[BOJ] 10815. 숫자 카드 (0) | 2020.10.17 |
[BOJ] 3085. 사탕 게임 (0) | 2020.10.06 |
[BOJ] 2583. 영역 구하기 (0) | 2020.10.06 |
[BOJ] 11729. 하노이 탑 이동 순서 (0) | 2020.10.04 |