[BOJ] 1920. 수 찾기
15 Apr 2026
Reading time ~1 minute
풀이
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr;
int[] targetArr;
int N, M;
int[] answers;
N = sc.nextInt();
arr = new int [N];
for(int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
M = sc.nextInt();
targetArr = new int [M];
answers = new int [M];
for(int i = 0; i < targetArr.length; i++) {
targetArr[i] = sc.nextInt();
}
Arrays.sort(arr);
for(int i = 0; i < targetArr.length; i++) {
int start_index = 0;
int end_index = arr.length - 1;
int target = targetArr[i];
binarySearch(start_index, end_index, target, answers, arr, i);
}
for(int i = 0; i < answers.length; i++) {
System.out.println(answers[i]);
}
}
public static void binarySearch(int start_index, int end_index, int target, int[] answers, int[] arr, int i) {
while(start_index <= end_index) {
int mid_index = (start_index + end_index) >>> 1;
if(target < arr[mid_index]) {
end_index = mid_index - 1;
} else if(target > arr[mid_index]) {
start_index = mid_index + 1;
} else { // target == arr[mid_index];
answers[i] = 1;
break;
}
}
}
}