구명보트 자바스크립트

HyosikPark·2020년 11월 25일
0

알고리즘

목록 보기
39/72
function solution(people, limit) {
    let answer = 0;
    
    people.sort((a,b) => b-a);
    
    let left = 0;
    let right = people.length-1
    
    while(left<right) {
        if(people[left] + people[right] > limit) {
            left++;
        } else {
            left++;
            right--;
        }
        answer++;
        if(left == right) answer++;
        
    }
    return answer;
}

처음에 문제를 잘못읽고 최대 2명을 태울 수 있다는 것을 생각치 못했다.
2명만 태울 수 있을경우 오히려 문제가 쉬워진다. 사람들의 무게를 내림차순으로 정렬한 후에 무게가 가장 무거운 사람과 가장 가벼운사람을 태울 수 있으면 두사람을 제하고, 태울 수 없다면 무거운 사람을 하나씩 빼가면서 구명보트의 개수를 증가시켜주면 된다. index가 같아질 경우 반복문이 실행되지 않기 때문에 한 사람이 남게 되는 것을 고려하여 구명보트를 하나 더 추가해 준다.

0개의 댓글