Menu
CoddyTech

Koko Eating Bananas

보통이진 탐색python iconjava iconcpp iconc iconjs icon+10

Koko에게는 바나나 더미가 n개 있으며, piles[i]는 i번째 더미에 있는 바나나의 개수이고, 경비원이 돌아오기까지 h시간이 남아 있습니다. Koko는 시간당 바나나를 먹는 속도 k를 정수로 하나 선택해 계속 유지합니다. 매시간 한 더미에서 바나나를 k개 먹습니다. 그 더미에 남은 바나나가 k개보다 적으면 남은 바나나를 모두 먹고, 시간이 끝날 때까지 쉽니다. h시간 안에 모든 더미를 다 먹을 수 있는 가장 작은 속도 k를 반환하세요.

함수

minEatingSpeed(piles: integer-array, h: integer) → integer
pilesinteger-array
각 더미에 있는 바나나의 개수
hinteger
Koko가 가진 시간
반환값integer
h시간 이내에 모든 바나나 더미를 먹어 치울 수 있는 최소 정수 먹는 속도(시간당 바나나 수)

제약 조건

  • 1 ≤ piles.length ≤ 5000
  • 1 ≤ piles[i] ≤ 109
  • piles.length ≤ h ≤ 109이므로 항상 답이 존재합니다.

예제

입력
piles = [4, 10, 7, 3]h = 6
출력
5
설명
속도 5에서 더미 4, 10, 7, 3은 각각 1, 2, 2, 1시간이 걸립니다. 총 6시간으로, 제한 시간에 맞습니다. 속도 4에서는 각각 1, 3, 2, 1시간이 걸리며, 총 7시간으로 1시간 초과합니다.

lock icon제출 시 숨은 테스트 +22개

challenge icon

후속 질문

A twin problem: Koko에게는 d일이 주어지고, 매일 k개의 바나나라는 일일 한도에 맞춰 주어진 순서대로 더미를 통째로 먹습니다. 가장 작은 k는 얼마이며, 이분 탐색의 어떤 두 부분이 바뀌나요?

코드 초기화
def minEatingSpeed(piles, h):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

piles = [4, 10, 7, 3]
h = 6

기대값

5