[Programmers] 구명보트

김민석·2021년 12월 28일
0

프로그래머스

목록 보기
29/30

최대한 효율적으로 구명보트를 태워 사람들을 탈출시키는 문제이다.

구명보트에 탈 수 있는 인원은 최대 2명이며 무게 제한 역시 있다.

문제풀이 전략
보트에 최대 두명이 탈 수 있으므로 가장 무거운 사람과 다른 사람 한명을 같이 태워 보내는 과정을 반복하면 된다고 생각하였다.

가장 무거운 사람과 탈 사람을 선택함에 있어서도 탈 수 있는 사람 중 가장 무거운 사람을 태워야 한다고 생각하였다.

그래서 고민이 좀 많았다.

하지만 가장 무거운 사람과 가장 가벼운 사람을 태울지 말지만 선택하면 되는 문제였다.

현재 가장 무거운 사람과 탈 수 있는 사람은 무조건 다음으로 무거운 사람과 탈 수 있기 때문이다.

코드

function solution(people, limit) {
    var answer = 0;

    people.sort(function(a,b){
        return b-a;
    })

    let heavy = 0;
    let light = people.length - 1;

    while(heavy <= light){
        const sum = people[heavy] + people[light];
        if(sum > limit)
            heavy++;
        else{
            heavy++;
            light--;
        }
        answer++;
    }
    return answer;
}

출처
https://programmers.co.kr/learn/courses/30/lessons/42885

profile
김민석의 학습 정리 블로그

0개의 댓글