/ BOJ

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);
			}
		}
	}

}