알고리즘 문제
[C/C++ 백준 1920번] 수찾기 (Silver 4) (Class 2)
새파란 공대생
2020. 7. 26. 16:29
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개의 수들이 주어지는데, 이 수들이 A안��
www.acmicpc.net
이분 탐색 알고리즘을 처음 써 보았다. 생각보다 쓰기도 간편하고 직관적이었다. 쓸 줄만 알면 쉽게 풀 수 있는 문제같다.
코드는 다음과 같다.
#include <cstdio>
#include <algorithm>
using namespace std;
int main(void){
int N, M, num, left, right, mid;
scanf("%d", &N);
int number[N];
for(int i=0; i<N; i++){
scanf("%d", &number[i]);
}
sort(number, number+N);
scanf("%d", &M);
for(int j=0; j<M; j++){
scanf("%d", &num);
left = 0;
right = N-1;
mid = (left+right)/2;
while(left<=right){
if(number[mid]<num)
left = mid + 1;
else if(number[mid]>num)
right = mid - 1;
else
break;
mid = (left+right)/2;
}
if(number[mid]==num)
printf("1\n");
else
printf("0\n");
}
}