이진 탐색 알고리즘은 Up-Down 게임과 유사하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class FindNumber {
static int N, M;
static int[] A;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
A = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(A);
st = new StringTokenizer(br.readLine());
M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
for (int i = 0; i < M; i++) {
int result = Arrays.binarySearch(A, Integer.parseInt(st.nextToken()));
if(result >= 0) System.out.println("1");
else System.out.println("0");
}
}
}
탐색 알고리즘 중 가장 시간 복잡도가 적은 Binary Search를 이용하기 위한 조건은 탐색하고자 하는 배열이 정렬이 되어 있어야 한다.