반응형
문제
설명
문제에서 "구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없다" 라는 조건을 늦게 발견해서 오래걸렸다.
people 배열을 정렬한 후, 양쪽 끝을 더해준다.
limit를 초과하면 left++만 하고, limit를 초과하지 않으면 left++과 right--를 해준다.
코드
function solution(people, limit) {
let answer = 0;
let left = 0;
let right = people.length - 1;
people.sort((a, b) => b - a);
while (left <= right) {
if (people[left] + people[right] <= limit) {
left++;
right--;
answer++;
} else {
left++;
answer++;
}
}
return answer;
}