2023년 02월 22일 수요일 - 민규 자취방에 놀러가따!
오늘 올려볼 문제는 1011번 Capacity To Ship Packages Within D Days 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
이진탐색 파뤼
입력
사진에서도 볼 수 있듯이 int 배열 1개와 int 값 1개가 입력으로 들어온다.
풀이 및 코드
int 배열 순서를 지키면서 배를 통해 물건을 나를 때 days 만큼 나를 수 있다. 모든 물건을 나르는데 필요한 배의 가장 작은 수용량을 구하는 문제이다.
오늘은 처음부터 정답을 생각해냈다.
배 용량으로 바이너리 서치를 하면 된다.
이제 코드를 봐보자!
풀이코드
class Solution {
public int shipWithinDays(int[] weights, int days) {
int sum = 0, max = 0;
for(var w : weights) {
sum += w;
max = Math.max(max, w);
}
int left = max, right = sum;
while(left <= right) {
int count = 0, s = 0, mid = left + (right - left) / 2;
for(var w : weights) {
if(s + w > mid) {
s = 0;
count++;
}
s += w;
}
if(count >= days) left = mid + 1;
else right = mid - 1;
}
return left;
}
}
제출 화면
오늘은 블로그로 갬성 글을 조금 써볼 생각이다.
왜냐고? 그냥
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.
'LeetCode 문제 풀이' 카테고리의 다른 글
[LeetCode] 121번 Best Time to Buy and Sell Stock 문제를 풀어보았다. (ft. java) (0) | 2023.02.25 |
---|---|
[LeetCode] 502번 IPO 문제를 풀어보았다. (ft. java) (1) | 2023.02.23 |
[LeetCode] 540번 Single Element in a Sorted Array 문제를 풀어보았다. (ft. java) (0) | 2023.02.21 |
[LeetCode] 1523번 Count Odd Numbers in an Interval Range 문제를 풀어보았다. (ft. java) (0) | 2023.02.13 |
[LeetCode] 2306번 Naming a Company 문제를 풀어보았다. (ft. java) (2) | 2023.02.09 |