문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42885
function solution(people, limit) {
let answer = 0;
people.sort((a, b) => b - a);
while (people.length > 0) {
if (people[0] + people[1] <= limit) {
people.shift();
people.shift();
answer++;
} else {
people.shift();
answer++;
}
}
return answer;
}
틀린 풀이: 처음에 단순히 큰놈들 부터 뺴나가는 식으로 구현했더니 입출력 예만 맞고 대부분 테스트케이스에서 틀림
function solution(people, limit) {
let answer = 0;
people.sort((a, b) => b - a);
for (let i = 0, j = people.length - 1; i <= j; i++) {
if (people[i] + people[j] <= limit) {
j--;
answer++;
} else {
answer++;
}
}
return answer;
}
다른분의 풀이: 큰놈과 작은놈 하나를 골라 limit제한이 안걸리면, 두 사람이 빠지고, 구명 보트 개수 추가
그렇지 않으면 가장 무거운 사람만 빠지고 구명보트 개수 추가