728x90
https://leetcode.com/problems/koko-eating-bananas/description/
보자마자 이진탐색이라는 생각이 들어서 바로 이진탐색 코드를 썼습니다.
빠나나를 시간당 몇 개 먹는지를 찾기위해 이진탐색을 하였습니다.
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
'PS > 릿코드' 카테고리의 다른 글
[릿코드 2186] Minimum Number of Steps to Make Two Strings Anagram II (파이썬/python) (0) | 2023.03.08 |
---|---|
[릿코드 1497] Check If Array Pairs Are Divisible by k (파이썬/python) (0) | 2023.03.08 |
[릿코드 122] Best Time to Buy and Sell Stock II (파이썬/python) (0) | 2023.03.07 |
[릿코드 2187] Minimum Time to Complete Trips (파이썬/python) (0) | 2023.03.07 |
[릿코드 2] Add Two Numbers (파이썬/python) (0) | 2023.03.06 |