
https://school.programmers.co.kr/learn/courses/30/lessons/43238
def solution(n, times):
answer = 0
#6명
#7분, 10분 (2개)
left, right = min(times), max(times) * n
while left <= right:
mid = (left + right ) // 2
people = 0
for time in times:
people += mid // time
if people >= n:
break
if people >= n:
answer = mid
right = mid - 1
elif people < n:
left = mid + 1
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/43236
def solution(distance, rocks, n):
rocks.sort()
left, right = 1, distance
answer = 0
def feasible(mid):
removed = 0
prev = 0
for x in rocks:
if x - prev < mid:
removed += 1
if removed > n:
return False
else:
prev = x
if distance - prev < mid:
removed += 1
return removed <= n
while left <= right:
mid = (left + right) // 2
if feasible(mid):
answer = mid
left = mid + 1
else:
right = mid - 1
return answer