forked from ndb796/python-for-coding-test
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path2.py
More file actions
27 lines (24 loc) Β· 842 Bytes
/
2.py
File metadata and controls
27 lines (24 loc) Β· 842 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# μ΄μ§ νμ μμ€μ½λ ꡬν(μ¬κ· ν¨μ)
def binary_search(array, start, end):
if start > end:
return None
mid = (start + end) // 2
# κ³ μ μ μ μ°Ύμ κ²½μ° μΈλ±μ€ λ°ν
if array[mid] == mid:
return mid
# μ€κ°μ μ΄ κ°λ¦¬ν€λ κ°λ³΄λ€ μ€κ°μ μ΄ μμ κ²½μ° μΌμͺ½ νμΈ
elif array[mid] > mid:
return binary_search(array, start, mid - 1)
# μ€κ°μ μ΄ κ°λ¦¬ν€λ κ°λ³΄λ€ μ€κ°μ μ΄ ν° κ²½μ° μ€λ₯Έμͺ½ νμΈ
else:
return binary_search(array, mid + 1, end)
n = int(input())
array = list(map(int, input().split()))
# μ΄μ§ νμ(Binary Search) μν
index = binary_search(array, 0, n - 1)
# κ³ μ μ μ΄ μλ κ²½μ° -1 μΆλ ₯
if index == None:
print(-1)
# κ³ μ μ μ΄ μλ κ²½μ° ν΄λΉ μΈλ±μ€ μΆλ ₯
else:
print(index)