★ 1920 수 찾기 ★
//1920
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <deque>
using namespace std;
int binary_search(vector<int> &arr, int target){
int start, end;
start = 0;
end = arr.size()-1;
int mid;
while(start<=end){
mid = (start+end)/2;
if(target<arr[mid]){
end = mid - 1;
}
else if(arr[mid]<target){
start = mid + 1;
}
else{
return 1;
}
}
return 0;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M, x, y;
cin >> N;
vector<int> arr1(N);
for(int i=0;i<N;i++){
cin >> x;
arr1[i]=x;
}
cin >> M;
vector<int> arr2(M);
for(int i=0;i<M;i++){
cin >> y;
arr2[i]=y;
}
sort(arr1.begin(), arr1.end());
for(int i:arr2){
cout << binary_search(arr1,i) << '\n';
}
return 0;
}
👩🏼🔬 이분탐색 코드 주의점)
(1) while(start < end)가 아니라 while(start<=end)
(2) TLE 날 경우 vector array 자체의 parameter 복사에 시간 초과 날 수 있으므로 & 기호 붙여서 주소를 parameter로 복사해 시간 초과 해결
👩🏼🔬 추가로 vector<int> arr1(N)과 같이 일단 vector array 내의 원소 개수 N개 또는 M개 이렇게 초기화 할 수 있다.
'C, C++ > 🥈 BOJ' 카테고리의 다른 글
(C++) ★DP Upper-Intermediate I - 2 Solved★ (0) | 2024.11.15 |
---|---|
(C++) ★Backtracking Intermediate I - 3 Solved★ (2) | 2024.11.15 |
(C++) ★Set/Map Upper-Intermediate I - 1 Solved★ (0) | 2024.11.15 |
(C++) ★Stack & Queue & Deque Intermediate I - 4 Solved★ (0) | 2024.11.15 |
(C++) ★Number Theory Intermediate I - 2 Solved★ (0) | 2024.11.15 |
댓글