728x90
https://www.acmicpc.net/problem/1920
문제 풀이
이분 탐색의 쉬운 문제이다.
이분 탐색 시에는 정렬이 되어야 한다는 점만 기억하면 된다!
느낀 점
qsort로 정렬할 때는 틀렸다고 나와서 그냥 sort를 사용했는데 맞았다. 어떤 것이 잘못됐는지 모르겠다.
코드
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
long long tmp;
long long arr[1000001];
int binary(int left, int right, int key) {
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (key > arr[mid]) left = mid + 1;
else if (key < arr[mid]) right = mid - 1;
else return 1;
}
return 0;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr, arr + n);
cin >> m;
for (int i = 0; i < m; i++) {
cin >> tmp;
cout << binary(0, n - 1, tmp) << "\n";
}
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 1654번 : 랜선 자르기 (0) | 2021.08.05 |
---|---|
[C++] 백준 10816번 : 숫자 카드 2 (0) | 2021.08.05 |
[C++] 백준 2740번 : 행렬 곱셈 (0) | 2021.07.30 |
[C++] 백준 11401번 : 이항 계수 3 (0) | 2021.07.30 |
[C++] 백준 2004번 : 조합 0의 개수 (0) | 2021.07.28 |
댓글