people
사람들의 몸무게를 담은 배열 | [70, 50, 80, 50] | 무인도에 갇힌 사람은 1명 이상 50,000명 이하, 각 사람의 몸무게는 40kg 이상 240kg 이하
limit
구명보트의 무게 제한 | 100 | 구명보트의 무게 제한은 40kg 이상 240kg 이하, 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없음
사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return
가장 무거운 사람과 가장 가벼운 사람의 합이 limit보다 크다면 가장 무거운 사람은 누구와도 같이 타지 못함 (그리디)
=> 정렬 + 투포인터
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int N = people.length;
Arrays.sort(people);
int s=0, e=N-1, save=0;
while(s<e){
if(limit < people[s]+people[e]){
e-=1;
}else{
s+=1;
e-=1;
save+=1;
}
}
return N-save;
}
}