BOJ_1920_수찾기_JAVA
문제 : 수 찾기
링크 : BOJ_1920_수찾기
접근 방식
A 배열과 B 배열이 있을 때 B배열의 요소가 A 배열에 존재하는지 체크하여 존재한다면 1을, 존재하지 않는다면 0을 출력해야 되는 문제이다. 채점현황을 살펴보니, 꽤나 시간에 빡빡하다는 것을 먼저 알았다.
Arrays 클래스에는 특정 값에 대한 인덱스를 찾아내는 메서드로 binarySearch가 있다. 이 메서드는 정렬된 배열에서 이분탐색을 통해 찾으려는 값의 인덱스를 찾아낸다. 만약 값이 존재하지 않는다면 음수를 반환한다.
이 문제는 위의 Api의 메서드를 활용해 간단히 풀었다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BOJ_1920_수찾기 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(in.readLine());
int arr[] = new int[N];
StringTokenizer st = new StringTokenizer(in.readLine());
for(int i=0;i<N;i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int M = Integer.parseInt(in.readLine());
int check[] = new int[M];
st = new StringTokenizer(in.readLine());
for(int i=0;i<M;i++) {
check[i] = Integer.parseInt(st.nextToken());
}
for(int i=0;i<M;i++) {
if(Arrays.binarySearch(arr, check[i]) < 0) {
System.out.println(0);
}else {
System.out.println(1);
}
}
}
}