01
07
๋ฐ˜์‘ํ˜•

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

 


์˜ค๋‹ต๋…ธํŠธ(ํ‘ธ๋Š” ๋™์•ˆ ์‚ฌ๊ณ ๊ณผ์ • ๋ฐ ๊ฐœ์„ ์ )

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์˜ˆ์ „์— ์ •๋ ฌ๋กœ ๋Œ€์ถฉ ๋–ผ์šฐ๋ ค๋‹ค๊ฐ€ ๋ชปํ’€๊ณ  ๋„˜๊ธด ๋ฌธ์ œ๋‹ค. ๋„ˆ๋ฌด ์˜ˆ์ „์— ํ‹€๋ ค์„œ ์˜ค๋‹ต ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค๋„ ๊ทธ๋•Œ์˜ ์‚ฌ๊ณ ๊ณผ์ •์ด ์ƒ๊ฐ๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ถ„ํƒ์ƒ‰์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์Šต๋“ํ•˜๊ณ  ๋‚˜์„œ ํ’€๊ฒŒ ๋œ ๋ฌธ์ œ์ด๋‹ค. ๊ธฐ์ค€์ ์„ ์ •ํ•˜๊ณ , L, R์„ ์›€์ง์ด๋ฉด์„œ ๋ฒ”์œ„๋ฅผ (1/2)^n์œผ๋กœ ์ขํ˜€๊ฐ€๋Š” ๊ฐœ๋…์ธ๋ฐ, ์ฝ”๋“œ๊ฐ€ ์•„์ง ์–ด์ƒ‰ํ•ด์„œ ๋น„์Šทํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋ฅผ ์ข€ ๋” ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.


์ •๋‹ต์ฝ”๋“œ

import java.io.FileInputStream;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

class Main{

    public static int binarySearch(int[] arr, int target){
        int l=0; int r = arr.length-1;
        while (l<=r){
            int m = (l+r)/2;
            if(arr[m]<target) l = m+1;
            else if(arr[m]>target) r = m-1;
            else return 1;
        }
        return 0;
    }

    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arrN = new int[n];
        for(int i=0; i<n;i++){
            arrN[i] = sc.nextInt();
        }
        int m = sc.nextInt();
        int[] arrM = new int[m];
        for(int i=0; i<m;i++){
            arrM[i] = sc.nextInt();
        }
        Arrays.sort(arrN);
        for(int X: arrM){
            System.out.println(binarySearch(arrN, X));
        }

        sc.close();
    }
}

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•
COMMENT