습관처럼

백준 10815 - 숫자 카드 본문

Algorithms/BOJ

백준 10815 - 숫자 카드

dev.wookii 2020. 3. 31. 18:19

https://www.acmicpc.net/problem/10815

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이

www.acmicpc.net

문제 설명


상근이가 숫자 카드들을 가지고 있으며 주어진 숫자가 상근이가 가지고 있는 숫자카드에 있는지 없는지를 판단하는 문제이다.

 

 

접근 방법


전형적인 이분탐색 문제입니다.

 

 

코드


#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n,m;
int nNumber[500001], mNumber[500001];
void bs(int target,int low, int high){
    bool searched = false;
    while(low<=high){
        int mid = (low+high)/2;
        if(nNumber[mid]==target){
            searched=true;
            break;
        }
        else if(nNumber[mid]<target) low= mid+1;
        else high=mid-1;
    }
    if(searched){cout<<1<<" ";return;}
    else {cout<<0<<" ";return;}
}
int main(){
	cin>>n;
    for(int i=0;i<n;i++) cin>>nNumber[i];
    cin>>m;
    for(int i=0;i<m;i++) cin>>mNumber[i];
    sort(nNumber,nNumber+n);
    //for(int i=1;i<=n;i++) cout<<nNumber[i]<<" ";

    for(int i=0;i<m;i++){
        int start=0,last=n-1;
        bs(mNumber[i],start,last);
    }
}

funny algorithm *0*b~

'Algorithms > BOJ' 카테고리의 다른 글

백준 10026 - 적록색약  (0) 2020.04.02
백준 1654 - 랜선 자르기  (0) 2020.04.01
백준 11004 - k번째 수  (0) 2020.03.30
백준 3053 - 택시 기하학  (0) 2020.03.30
백준 14889 - 스타트와 링크  (0) 2020.03.29