간단한 문제다, 이진탐색의 본질 알고리즘을 물어본다.
import java.io.*;
import java.util.*;
public class Main {
public static int binarySearch(int[] arr, int start, int end) {
if (start > end) return -1;
int mid = (start + end) / 2;
if (arr[mid] == mid) return mid;
else if (arr[mid] < mid) return binarySearch(arr, mid + 1, end);
else return binarySearch(arr, start, mid - 1);
}
public static void main (String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N ; i++) arr[i] = Integer.parseInt(st.nextToken());
int answer = binarySearch(arr, 0, N - 1);
System.out.println(answer);
}
}