File tree Expand file tree Collapse file tree
src/ver2/Leet_800_Koko_Eating_Bananas Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # Leet_800_Koko_Eating_Bananas
2+
3+ ## 문제 링크
4+ https://leetcode.com/problems/koko-eating-bananas/
5+
6+ ## 카테고리
7+ ` 이분탐색 `
8+
9+ ## 접근 방식
10+ 하나의 일차원 배열이 있고 그 배열의 모든 조건을 부합하는 최소의 정수 N을 구하는 문제이다.
11+ 이를 구하기 위해서 먼저 1 ~ max까지의 선형적인 수들의 최댓값 max를 정의하고 그 max 사이의 값을 이분탐색으로 찾아준다
12+ ```
13+
14+ while(start <= end){
15+ long mid = (start + end) / 2;
16+
17+ if(canEat(mid)) {
18+ ans = mid;
19+ end = mid -1;
20+ }
21+ else start = mid + 1;
22+ }
23+ ```
24+
25+ ## 코드
26+ ``` java
27+ package ver2.Leet_800_Koko_Eating_Bananas ;
28+
29+ class Solution {
30+ int [] piles;
31+ int h;
32+
33+ public int minEatingSpeed (int [] piles , int h ) {
34+ this . piles = piles;
35+ this . h = h;
36+ long ans = 0 ;
37+ long max = - 1 ;
38+
39+ for (int p : piles){
40+ max = Math . max(p,max);
41+ }
42+
43+ long start = 1 ;
44+ long end = max;
45+
46+ while (start <= end){
47+ long mid = (start + end) / 2 ;
48+
49+ if (canEat(mid)) {
50+ ans = mid;
51+ end = mid - 1 ;
52+ }
53+ else start = mid + 1 ;
54+ }
55+
56+ return (int )ans;
57+ }
58+
59+ private boolean canEat (long time ){
60+ long cnt = 0 ;
61+
62+ for (int p : piles){
63+ cnt += (p + time - 1 )/ time;
64+ }
65+
66+ return cnt <= h ? true : false ;
67+ }
68+ }
69+ ```
Original file line number Diff line number Diff line change 1- package ver2 ;
1+ package ver2 . Leet_800_Koko_Eating_Bananas ;
22
33class Solution {
44 int [] piles ;
@@ -48,6 +48,7 @@ private boolean canEat(long time){
4848하나의 일차원 배열이 있고 그 배열의 모든 조건을 부합하는 최소의 정수 N을 구하는 문제이다.
4949이를 구하기 위해서 먼저 1 ~ max까지의 선형적인 수들의 최댓값 max를 정의하고 그 max 사이의 값을 이분탐색으로 찾아준다
5050```
51+
5152while(start <= end){
5253 long mid = (start + end) / 2;
5354
You can’t perform that action at this time.
0 commit comments