1920번: 수 찾기
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
vector<int>mv, nv, answer;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> m;
nv.push_back(m);
}
cin >> n;
for (int i = 0; i < n; i++) {
cin >> m;
mv.push_back(m);
}
sort(nv.begin(), nv.end()); //nv배열 오름차순 정렬
int low = 0, high = nv.size() - 1, mid;
for (int i = 0; i < mv.size(); i++) {
while (true) { //이분탐색
mid = (low + high) / 2;
if (mv[i] == nv[mid]) { //키값 찾았을 때
answer.push_back(1);
break;
}
else if (mv[i] < nv[mid]) //mid값보다 작을때
high = mid - 1;
else if (mv[i] > nv[mid]) //mid값보다 클때
low = mid + 1;
if(low > high){ //키값 없을 때
answer.push_back(0);
break;
}
}
low = 0, high = nv.size() - 1; //low, high값 초기화
}
for (int i = 0; i < answer.size(); i++)
cout << answer[i] << "\n";
system("pause");
return 0;
}
'백준' 카테고리의 다른 글
백준_1431: 시리얼 번호 (0) | 2021.01.29 |
---|---|
백준_18353: 병사 배치하기 (0) | 2021.01.29 |
백준_9753: 짝 곱 (0) | 2021.01.22 |
백준_9095: 1,2,3 더하기 (1) | 2021.01.18 |
백준_11048: 이동하기 (0) | 2021.01.18 |