https://programmers.co.kr/learn/courses/30/lessons/42885
function solution(people, limit) {
people.sort(function (a, b) { return a - b });
for (var i = 0, j = people.length - 1; i < j; j--) {
if (people[i] + people[j] <= limit) i++;
}
return people.length - i;
}
var people = [70, 50, 80, 50];
var limit = 100;
console.log(solution(people, limit));
문제를 접근할때 관찰을 잘해야한다.
보트가 감당가능한 무게를 넘으면 보트는 더이상 사람을 받을수 없다.
즉, 사람들을 내림차순으로 작은 것들이 앞에 오도록 정렬을 시킨후,
총사람 숫자 - 여려명이서 보트를 타는 경우 를 하면 보트가 왔다갔다 하는 횟수가 나온다.
작은 것순으로 정렬시키면 맨앞의 사람과 같이 탈수 있는 몸무게가 가장 큰 사람이 함께 타면 보트 횟수를 + 시킨다.
이상태에서 2번째 사람과 같이 탈수 있는 몸무게가 2번째로 큰사람 이렇게 짝을 묶어 보트 횟수를 + 시키고 이 횟루를 총사람 숫자에서 빼면 (중복되기 때문)
보트가 왔다갔다 하는 횟수를 알수 있다.
사람수가 최대 50000명이라고 했을때 이를 이중 반복문으로 돌리면 25억이다.
반복 횟수가 너무 많으므로 시간초과가 될 확률이 높다.