이코테 고정점 찾기

업데이트:

고정점 찾기

이진 탐색 알고리즘으로 반절씩 줄여나가면서 찾음

import java.util.Scanner;

public class FixedPoint {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		int[] nums = new int[N];
		
		for(int i = 0; i < N; i++) {
			nums[i] = sc.nextInt();
		}
		
		int result = findNum(0, N-1, nums);
		
		System.out.println(result);
	}

	private static int findNum(int left, int right, int[] nums) {
		int result = -1;
		if(left <= right) {
			int mid = (left + right) / 2;
			
			if(nums[mid] == mid) {
				return mid;
			} else if(nums[mid] > mid) {
				return findNum(left, mid-1, nums);
			} else {
				return findNum(mid+1, right, nums);
			}
		}
		return result;
	}

}

댓글남기기