Study hard
(c++)백준 1920번: 수 찾기 본문
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
[풀이]
이분탐색을 사용하여 풀었다.
※이분탐색을 하려면 배열 A를 정렬시켜야 하므로 vector자료구조를 사용하였다.
#include <iostream>
#include <vector>
#include <algorithm>//sort
using namespace std;
int N, M;
vector<int>A;
void Search(int n) {
int front = 0, rear = N - 1;
while (front <= rear) {
int mid = (front + rear) / 2;
if (A[mid] == n) {
cout << 1 << '\n';
return;
}
else if (A[mid] < n) {
front = mid + 1;
}
else if (A[mid] > n) {
rear = mid - 1;
}
}
cout << 0 << '\n';
return;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> n;
A.push_back(n);
}
//이분탐색을 하려면 정렬되어 있어야 한다!
sort(A.begin(), A.end());
cin >> M;
for (int i = 0; i < M; i++) {
cin >> n;
Search(n);
}
return 0;
}
'백준 > 이분, 삼분탐색' 카테고리의 다른 글
(c++)백준 10816번: 숫자 카드 2 (0) | 2020.06.24 |
---|---|
(c++)백준 10815번: 숫자 카드 (0) | 2020.06.24 |
(c++)백준 2110번: 공유기 설치 (0) | 2020.06.23 |
(c++)백준 2805번: 나무 자르기 (0) | 2020.06.23 |
(c++)백준 1654번: 랜선 자르기 (0) | 2020.06.23 |