백준 buffer를 사용한 이진탐색

정호윤·2023년 3월 14일

자바

목록 보기
30/46
import java.util.*;
import java.io.*;

class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        String str = br.readLine();
        StringTokenizer st = new StringTokenizer(str," ");
        int[] arr = new int[N];
        for(int i=0;i<N;i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(arr);

        int M = Integer.parseInt(br.readLine());
        String str2=br.readLine();
        StringTokenizer st2 = new StringTokenizer(str2," ");
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<M-1;i++){
            // str2에 있는걸 binarysearch에 넣고
            // 넘겨져오는걸 builder에 넣는다
            int sol = binarySearch(Integer.parseInt(st2.nextToken()),arr);
            sb.append(sol+" ");
        }
        String sol=sb.append(binarySearch(Integer.parseInt(st2.nextToken()),arr)).toString();
        System.out.println(sol);
    }

    public static int binarySearch(int key,int[] arr){
        int lo = 0;
        int hi = arr.length-1;
        
        while(lo<=hi){
            int mid = (lo+hi)/2;
            if(arr[mid] <key) lo=mid+1;
            else if(arr[mid]>key) hi=mid-1;
            else return 1;
        }
        return 0;

    }
}

Scanner 사용할 때랑 구조가 조금 달라서 애먹었다.

profile
개발자로 취직을 희망합니다.

0개의 댓글