Notice
250x250
Recent Posts
Recent Comments
Link
넘치게 채우기
[LeetCode] 881. Boats to Save People 본문
728x90
반응형
https://leetcode.com/problems/boats-to-save-people/description/
leetcode - Boats to Save People
문제 유형 : 정렬, 그리디, 투 포인터
문제 난이도 : Medium
문제
You are given an array people where people[i] is the weight of the ith person, and an infinite number of boats where each boat can carry a maximum weight of limit. Each boat carries at most two people at the same time, provided the sum of the weight of those people is at most limit.
Return the minimum number of boats to carry every given person.
people[i]는 i번째 사람의 무게를 뜻한다. 보트는 무한정 사용가능하다.
보트는 최대 limit만큼 버틸 수 있다.
보트에 최대 두 사람이 탈 수 있다.
모든 사람을 구조할 보트의 최소 개수를 구하시오.
풀이
우선, people배열을 정렬한다.
투 포인터로 배열의 양 끝에서 시작한다.
두 합이 limit이내라면, left++와 right--를 동시에, 아니라면 더 무거운 right을 혼자 태우는 뜻으로 right--만 해준다.
중간에 보트의 수를 누적시켜주자.
코드
C++
#pragma GCC optimize("03", "unroll-loops");
static const int __ = [](){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
return 0;
}();
class Solution {
public:
int numRescueBoats(vector<int>& people, int limit) {
sort(people.begin(), people.end());
int ans = 0;
int left = 0, right = people.size() -1;
while(left <= right) {
if(people[left] + people[right] <= limit) {
left++;
right--;
} else {
right--;
}
ans++;
}
return ans;
}
};
728x90
반응형
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 2487. Remove Nodes From Linked List (0) | 2024.05.06 |
---|---|
[LeetCode] 237. Delete Node in a Linked List (0) | 2024.05.05 |
[LeetCode] 165. Compare Version Numbers (0) | 2024.05.03 |
[LeetCode] 2441. Largest Positive Integer That Exists With Its Negative (0) | 2024.05.02 |
[LeetCode] 2000. Reverse Prefix of Word (0) | 2024.05.01 |