def binary_search(array, target, start, end):
while start <= end:
mid = (start+end) // 2
if array[mid] == target:
return mid
elif array[mid] > target:
end = mid-1
else :
start = mid+1
return None
: 정렬된 리스트에 값을 삽입할 때 정렬을 유지할 수 있는 인덱스를 리턴
EX.
from bisect import bisect_left, bisect_right
a = [1, 2, 4, 4, 8]
x = 4
print(bisect_left(a, x))
print(bisect_right(a, x))
실행결과 :
2
4
from bisect import bisect_left, bisect_right
def cbr(a, left,right):
right_index = bisect_right(a, right)
left_index = bisect_left(a, left)
return right_index - left_index
: 최적화 문제를 결정문제(Y or N)로 바꾸어서 해결하는 기법 => 이진탐색으로 해결 가능