Algorithm & Data Structures/BOJ

2776. 암기왕 (Java)

Geisha 2024. 1. 27. 14:19

이분탐색의 기초적인 예를 들 수있는 문제이다.

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

public class b2776 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st ;
        StringBuilder sb = new StringBuilder();
        int tc = Integer.parseInt(br.readLine());
        for(int t = 0 ; t < tc ; t++){

            int n = Integer.parseInt(br.readLine());
            int[] arr = new int[n];
            st = new StringTokenizer(br.readLine());
            for (int i = 0 ; i < n ; i++){
                arr[i] = Integer.parseInt(st.nextToken());
            }
            Arrays.sort(arr);
            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 left = 0, right = n - 1;
                boolean find = false;
                while (left <= right) {
                    int mid = (left + right) / 2;
                    if (num == arr[mid]) {
                        find = true;
                        break;
                    } else if (num < arr[mid]) right = mid - 1;
                    else left = mid + 1;
                }
                if (find) sb.append(1 + "\n");
                else sb.append(0 + "\n");
            }
        }
        System.out.println(sb);
    }
}