import sys
# sys.stdin.readline()
from collections import deque
sys.setrecursionlimit(100000000)
import heapq
import copy
import itertools
from itertools import combinations
from itertools import permutations
INF = 1e9
from bisect import bisect_left,bisect_right
def findIndex(start,end):
if start > end:
return None
mid = (start + end) // 2
if arr[mid] == mid:
return mid
elif arr[mid] > mid:
return findIndex(start,mid-1)
else:
return findIndex(mid+1,end)
N = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
value = findIndex(0,len(arr))
if value == None:
print(-1)
else:
print(value)
쉬운 문제였다
그냥 array[index] == index 기점으로 해서
array[index] > index -> 왼쪽 탐색 ( start,mid-1)
array[index] < index -> 오른쪽 탐색(mid+1,end) 로 구분해주면 끝
코테 이렇게 나오고 나만 풀수 있게 사람들이 바보가 되는 세계가 있으면 좋겠어요 ㅠ
'알고리즘 문제 풀이 > 이코테' 카테고리의 다른 글
[이코테] CH07 이진 탐색 실전문제 30번 가사 검색(답안X) (1) | 2024.01.07 |
---|---|
[이코테] CH07 이진 탐색 실전문제 29번 공유기 설치 (0) | 2024.01.07 |
[이코테] CH07 이진 탐색 실전문제 27번 정렬된 배열에서 특정 수의 개수 구하기 (1) | 2024.01.07 |
[이코테] CH07 이진 탐색 실전문제 3번 떡볶이 떡 만들기 (0) | 2024.01.05 |
[이코테] CH07 이진 탐색 실전문제 2번 부품 찾기 (0) | 2024.01.05 |