고정점 찾기

최대 1 분 소요

고정점 찾기

해결방법

문제에서 고정점이란: 수열의 원소 중에서 그 값이 인덱스와 동일한 원소

문제에서 O(logN)으로 해결해야 한다는 걸 보고 바로 이진탐색을 떠올릴 수 있어야 한다.

n = int(input())
array = list(map(int, input().split()))

def search_fix(array, start, end):
    while start <= end:
        mid = (start + end) // 2
        if array[mid] == mid:
            return mid
        elif array[mid] < mid:
            start = mid + 1
        else:
            end = mid - 1
    return False

result = search_fix(array, 0, len(array) - 1)
if result == False:
    print(-1)
else:
    print(result)

댓글남기기