이분탐색_추가

Hvvany·2023년 2월 19일
0

알고리즘

목록 보기
5/12
# 휴게소 세우기
N, M, L = map(int, input().split())
arr = [0]+list(map(int, input().split()))+[L]
arr.sort()

start, end = 1, L-1
result = 0
while start <= end:
    count = 0
    mid = (start+end) // 2
    for i in range(1, len(arr)):
        # 현재 거리 중 mid보다 큰 거리를 찾아서
        if arr[i]-arr[i-1] > mid:
            # 나눈 만큼 휴게소를 설치 (현재 설치 돼있는 구역은 제외해야해서 -1)
            count += (arr[i]-arr[i-1]-1)//mid
    if count > M:
        start = mid+1
    else:
        end = mid-1
        result = mid
print(result)

result = mid 를 통해 조건을 만족시켰을 경우의 값을 저장하여 최종적으로 출력한다. 이분 탐색을 모두 돌고 난 후에 mid가 원하는 조건을 벗어날 수 있기 때문에!

profile
Just Do It

0개의 댓글