출처 : https://www.acmicpc.net/problem/1920
1920번: 수 찾기
첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안
www.acmicpc.net
고려사항
- 이분 탐색.
- 모든 수를 벡터에 담아서 알고리즘 헤더에 있는 sort 함수를 사용한다.
sort 함수가 퀵소트 기반으로 구현되어 있으니 정렬이 빠르게 된다! - 수가 있는지를 판별할 때에는 정렬된 벡터에서 이분탐색을 실시!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int search(vector<int> &v, int target){
int left = 0;
int right = v.size();
int mid;
while(left <= right){
mid = (left + right) / 2;
if(v[mid] == target){
return 1;
}
if(v[mid] < target){
left = mid + 1;
}else{
right = mid - 1;
}
}
return 0;
}
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
vector<int> v;
int n, m, tmp;
cin>>n;
for(int i=0;i<n;++i){
cin>>tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
cin>>m;
for(int i=0;i<m;++i){
cin>>tmp;
cout<<search(v, tmp)<<"\n";
}
return 0;
}
'BOJ 백준 > 기타' 카테고리의 다른 글
백준 02751 - 수 정렬하기 2 (0) | 2020.11.20 |
---|---|
백준 02750 - 수 정렬하기 (0) | 2020.11.18 |
백준 15654 - N과 M (5) (0) | 2020.11.16 |
백준 07662 - 이중 우선순위 큐 (0) | 2020.11.12 |
백준 02749 - 피보나치 수 3 (0) | 2020.11.11 |