class Solution:
def shipWithinDays(self, weights: List[int], days: int) -> int:
l, r = 1, sum(weights)
while l+1<r:
day = 0
m = (l+r)//2
pack = 0
for w in weights:
if w > m:
day = len(weights) + 1
break
if w > m - pack: day, pack = day+1, w
else: pack += w
if pack: day += 1
if day <= days : r = m
else : l = m
return r
이분탐색의 주인가...
댓글 0