CS/Algorithm
[ JAVA / 백준 : 1920 ] 수 찾기
yujindonut
2021. 8. 11. 09:22
728x90
조건
M개의 숫자를 입력받아, 앞에 입력받았던 N개에 숫자에 존재하면 1, 없으면 0 출력
풀이
2초안에 풀어야하니까 O(log n)인 이진탐색으로 풀었다
import java.util.Arrays;
import java.util.Scanner;
public class 수찾기 {
public static boolean binarySearch(int[] array, int target, int start, int end) {
while(start <= end) {
int middle = (start + end) / 2 ;
if(target == array[middle]) {
return true;
} else if(array[middle] > target){
end = middle - 1;
} else {
start = middle + 1;
}
}
return false;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N;
N = scan.nextInt();
int[] array = new int[N];
for(int i = 0; i < N; i++) {
array[i] = scan.nextInt();
}
Arrays.sort(array);
int M = scan.nextInt();
for(int i = 0; i < M; i++) {
int t = scan.nextInt();
if(binarySearch(array, t, 0, N - 1))
System.out.println(1);
else
System.out.println(0);
}
scan.close();
}
}
728x90