Algorithm
프로그래머스 - 구명보트
b._.omi
2023. 6. 7. 18:16

문제

풀이
사람들을 담은 배열 people을 몸무게가 가벼운 순인 오름차순으로 정렬시킨다
보트에 people 배열에서 가장 무거운 사람을 태운 뒤, people 배열에서 가장 가벼운 사람을 태울 수 있는지 확인한다
두 사람이 탈 수 있다면 두 사람을 태워 보내고 불가능하다면 다음으로 무거운 사람을 태운 뒤 확인한다
이 과정을 people 배열에 아무도 남지 않을 때 까지 반복한다
function solution(people, limit) {
let answer = 0;
let boat = [];
people.sort((a, b) => a - b);
while(people.length) {
boat.push(people.pop());
// 보트에 탄 사람의 무게 + 가장 가벼운사람의 무게가 limit보다 크지 않다면
if(boat[0] + people[0] <= limit) {
// 둘 다 탑승
boat.push(people.shift());
answer++;
boat = [];
}
// 아니라면
else {
// 다음 보트
answer++;
boat = [];
}
}
return answer;
}