본문 바로가기

PS/릿코드

[릿코드 875] Koko Eating Bananas (파이썬/python)

728x90

https://leetcode.com/problems/koko-eating-bananas/description/

 

Koko Eating Bananas - LeetCode

Can you solve this real interview question? Koko Eating Bananas - Koko loves to eat bananas. There are n piles of bananas, the ith pile has piles[i] bananas. The guards have gone and will come back in h hours. Koko can decide her bananas-per-hour eating sp

leetcode.com

 

보자마자 이진탐색이라는 생각이 들어서 바로 이진탐색 코드를 썼습니다.

빠나나를 시간당 몇 개 먹는지를 찾기위해 이진탐색을 하였습니다.

max end 는 바나나무더기 중 가장 많은 무더기의 바나나 숫자입니다.

왜냐하면 아무리 큰 숫자도 한 번에 한 무더기만 먹을 수 있으며
그 무더기의 바나나가 먹을 수 있는 한계보다 작아도 다른 무더기를 건들 수 없기 때문입니다.

 

class Solution:
    def minEatingSpeed(self, piles: List[int], h: int) -> int:
        # 빠나나를 시간당 몇 개 먹을수 있는지를 기준으로 이진탐색
        start, end = 1, max(piles)

        while start <= end:
            mid = (start + end) // 2

            max_h = h
            for i in range(len(piles)):
                if piles[i] > 0:
                    max_h -= math.ceil(piles[i] / mid)

            is_finish = True if max_h >= 0 else False

            if is_finish:
                end = mid - 1
            else:
                start = mid + 1

        return start
728x90