최대 두 명이 들어갈 수 있는 구명보트를 최소한 보내자! (무게 제한 고려)
→ 정렬을 해서 적은 몸무게 끼리 보내면 되지 않을까?
처음에는 몸무게가 작은 걸 먼저 고려한다면 많은 사람을 태울 수 있다고 생각했다. 하지만 구명 보트는 2명이라는 인원 제한이 존재한다!
따라서 가능한 경우는 다음과 같다.
이때 몸무게가 큰 사람의 경우 가장 작은 사람만 가능한 경우가 생길 수 있다. → 짝을 지어 보내자!
짝을 지어 보내는 로직은 다음과 같다.
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
Arrays.sort(people);
// min pointer & max pointer
int min_pt = 0;
int max_pt = people.length - 1;
int n = 0; // 보낸 사람의 수
while(n < people.length) {
if(people[min_pt] + people[max_pt] <= limit) {
n += 2;
min_pt++;
max_pt--;
}
else {
n += 1;
max_pt--;
}
answer++;
}
return answer;
}
}