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


이분탐색의 주인가...