875. Koko Eating Bananas

Doyeon Kim·2022년 9월 26일

코딩테스트 공부

목록 보기
120/171

문제 링크 : https://leetcode.com/problems/koko-eating-bananas/


주어진 배열의 각 요소는 바나나의 개수를 뜻하고 h시간안에 다 먹을 수 있는 가장 적은 수의 바나나 먹는 속도 k를 반환해 주면 됩니다.

예를 들어 piles = [3,6,7,11], h = 8 이 주어지면
코코는 한 시간에 바나나 1개부터 최대 max(piles)까지(=여기서는 11개, 한 시간에 11개를 먹으면 주어진 시간안에 다 먹을 수 있다 11>=11,3,6,7) 먹을 수 있는 경우의 수가 있다.

그래서 경우의 수 1~11까지 이진탐색을 하며 최소한의 바나나 먹는 속도를 반환하면 된다.
class Solution:
def minEatingSpeed(self, piles: List[int], h: int) -> int:
l, r = 1, max(piles)

    while l<=r:
        mid = (l+r)//2
        hrs= 0
        for p in piles:
            hrs += ceil(p /mid)
        if hrs <= h:
            r = mid -1
        else:
            l = mid+1
    return l

+) ceil 함수는 실수를 입력하면 올림 하여 정수를 반환하는 함수이다. ceil은 천장을 의미하는 단어이기 때문에 어떤 실수의 천장을 의미하는 바로 위 정수를 반환한다고 기억하면 좋다.

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글