APS/백준
[1920] 수 찾기 C++
문래동까마귀
2022. 2. 8. 00:47
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개의 수들이 주어지는데, 이 수들
www.acmicpc.net
- vector사용시 기본배열보다 시간이 더 오래걸리는 이유
-> vector는 동적 배열로 공간이 부족할때마다 2배로 확장을 함
- cin/ cout이 printf보다 오래걸리는 이유
-> scanf(0.798s)/ cin(2.051s)
-> ios_base::sync_with_stdio(false); cin.tie(null); 추가시 속도향상(0.796s)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
int N, M;
// vector<int> arr;
int arr[100001];
cin >> N;
for (int i = 0; i < N; i++) {
int num;
cin >> num;
arr[i] = num;
}
sort(arr, arr + N);
cin >> M;
for (int i = 0; i < M; i++) {
int flag = 0;
int searchNum;
cin >> searchNum;
int left = 0, right = N - 1;
while (left<=right) {
int middle = (left + right) / 2;
if (searchNum == arr[middle]) {
cout << "1" << "\n";
flag = 1;
break;
}
else if (searchNum < arr[middle])
right = middle - 1;
else
left = middle + 1;
}
if(flag==0)
cout << "0" << "\n";
}
return 0;
}