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
파이썬 list로 풀었을 때 보단 코드가 많이 길어졌지만,,
이분 탐색 첫 도전 ~_~
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int func(int target, int len){
int st =0;
int en = len-1;
while(st<=en){
int mid = (st+en)/2;
if(a[mid]<target)
st = mid+1;
else if(a[mid]>target)
en = mid-1;
else
{
return mid;
}
}
return -1;
}
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=0; i<n; i++){
cin>>a[i];
}
sort(a,a+n);
int m;
cin>>m;
while(m--){
int num;
cin>>num;
if(func(num,n)== -1) cout<<0<<"\n";
else cout<<1<<"\n";
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[c++] 백준 1764 듣보잡 (0) | 2021.01.15 |
---|---|
[c++] 백준 1026 보물 (0) | 2021.01.15 |
[c++] 백준 2839 설탕 배달 (0) | 2021.01.14 |
[c++] 백준 6359 만취한 상범 (0) | 2021.01.14 |
[c++] 백준 1929 소수 구하기 (0) | 2021.01.12 |