https://programmers.co.kr/learn/courses/30/lessons/42885
import java.util.Arrays;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
int min_idx = 0;
int max_idx = people.length - 1;
Arrays.sort(people);
while (min_idx <= max_idx) {
if (people[min_idx] + people[max_idx] <= limit) {
min_idx++;
}
max_idx--;
answer++;
}
return answer;
}
}
처음에 "구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없다" 는 것을 놓치고 생각해서 앞에서부터 순차적으로 생각했다.
최대 2명이므로 가장 몸무게가 적게 나가는 사람과 가장 몸무게가 많이 나가는 사람을 같이 태울 수 있느냐 없느냐를 판단해 주면 되었다.
같이 태울 수 있다면 => 둘 다 태워보내기 (min_idx++, max_idx--)
같이 태울 수 없다면 => 무거운 사람만 태워보내기 (max_idx--)