문제 링크 : https://www.acmicpc.net/problem/1920
문제 설명
n개의 정수가 주어지고 그다음 m개의 정수가 주어지는데
m개의 정수가 순서대로 n개의 정수중에 포함 되있으면 1 아니면 0출력 하면된다 . 줄바꿈 출력 주의.
알고 리즘
이분탐색으로 찾으면됨 .
먼저 n개의 정수를 정렬한뒤
lo = 0 , hi = n-1 로 지정하고 while문으로 이분탐색진행 하면된다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int N, M;
int arr[100001];
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++) {
int num;
cin >> num;
int lo = 0;
int hi = N - 1;
bool pos = false;
while (lo <= hi) {
int mid = (lo + hi) / 2;
if (num == arr[mid]) {
pos = true;
cout << 1;
break;
}
else if (num < arr[mid]) hi = mid - 1;
else lo = mid + 1;
}
if (!pos) cout << 0;
cout << "\n";
}
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'c++ > 백준' 카테고리의 다른 글
백준 2661번 : 좋은수열 (0) | 2020.04.17 |
---|---|
백준 9663번 : N-Queen (0) | 2020.04.17 |
백준 6236번: 용돈 관리 (0) | 2020.04.16 |
백준 1992번: 쿼드트리 (0) | 2020.04.16 |
백준 1759번 : 암호만들기 (0) | 2020.04.16 |