
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
Arrays.sort(people);
int n = people.length;
int left = 0;
int right = people.length - 1;
while(left <= right){
if(people[left] + people[right] <= limit){
left++;
}
right--;
answer++;
}
return answer;
}
}
20 30 70 80 이런식으로 있다고 가정한다. limit은 100이다.
20을 선택하면 80과 같이 태워야 가장 효율적이다. 그러므로 20을 선택하면 80을 선택하도록 설계해야 한다.
그래서 가장 가벼운 사람을 고르고, 그 사람과 가장 무거운 사람을 비교하고 초과하면 두번째로 무거운 사람과 비교하는 식으로 했다.
가벼운 사람을 고르는 건 오름차순이므로 left, 무거운 사람을 고르는 건 오른쪽이므로 right로 해서 left는 둘을 태우게 되면 이동하는 식으로, 가벼운 사람 기준으로 같이 태울 사람을 정하는 식으로 했다.
와 천재 ㄷㄷ