- 본 문제는 이분 탐색을 활용해서 풀어야 한다.
- low는 0을 high는 입력할 숫자보다 -1을 넣어주고 찾는 값의 크기와 비교하면서 답을 찾는다.
// 백준 Silver4 - 1920(수 찾기)
// 문제링크: https://www.acmicpc.net/problem/1920
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 숫자 개수
int A[] = new int[num];
for(int i=0; i<A.length; i++) {
A[i] = sc.nextInt();
}
Arrays.sort(A); // A 정렬
int num2 = sc.nextInt();
for(int i =0; i<num2; i++) {
int ans=0, low=0, high=num-1;
int key = sc.nextInt();
while(low<=high) {
int mid = (low+high)/2;
if(A[mid]==key) {
ans=1;
break;
}
if(A[mid]>key)
high = mid-1;
else
low = mid+1;
}
System.out.println(ans);
}
}
}
이분 탐색을 활용한 문제들을 많이 풀어본 경험이 있어서 그런지 이번 문제는 쉽게 해결할 수 있었던 것 같다.