프로그래머스 LV2 구명보트

dowon kim·2023년 8월 24일
0

function solution(people, limit) {
    // 몸무게를 내림차순으로 정렬하여 가장 무거운 사람부터 처리
    people.sort((a, b) => b - a);
    
    let left = 0; // 현재 보트에 태울 사람의 인덱스 (가장 무거운 사람부터 시작)
    let right = people.length - 1; // 현재 보트에 태울 수 있는 가장 가벼운 사람의 인덱스
    let boats = 0; // 필요한 보트의 수

    // 왼쪽 포인터가 오른쪽 포인터보다 작거나 같을 때까지 반복
    while (left <= right) {
        // 현재 가장 무거운 사람과 가장 가벼운 사람의 몸무게 합이 제한 무게 이하면 함께 태움
        if (people[left] + people[right] <= limit) {
            right--; // 다음으로 가벼운 사람을 가리키기 위해 오른쪽 포인터 감소
        }
        left++; // 다음으로 무거운 사람을 가리키기 위해 왼쪽 포인터 증가
        boats++; // 보트 하나를 사용했으므로 카운트 증가
    }
    
    return boats; // 필요한 최소 보트 수 반환
}
profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글