ALGORITHM

[JAVA] 백준 10815번- 숫자 카드

연듀 2022. 7. 30. 15:55

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

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

        int n = Integer.parseInt(br.readLine());
        int card[] = new int[n];

        st = new StringTokenizer(br.readLine());

        for (int i = 0; i < n; i++) {
            card[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(card);

        int m = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine());

        for(int i=0; i<m; i++){
            int num =Integer.parseInt(st.nextToken());

            int answer=0;
            int start=0, end=n-1;
            while(start<=end){
                int mid=(start+end)/2;
                if(card[mid]==num){
                    answer=1;
                    break;
                }
                if(card[mid]>num) end=mid-1;
                else start=mid+1;
            }
            sb.append(answer+" ");
        }
        System.out.println(sb);
    }
}

 

 

 

이 문제 또한 이분탐색을 이용하여 푸는 문제였다.