[프로그래머스] 구명보트

Gaanii·2025년 5월 1일

Problem Solving

목록 보기
184/210
post-thumbnail

아래 프로그래머스 로고를 클릭하면 해당 문제로 이동합니다 😀

프로그래머스로고



풀이과정


정렬 + 투포인터를 사용하면 최소 보트 개수를 구할 수 있다.

people를 오름차순 정렬한 후, "가장 가벼운 사람(left) + 가장 무거운 사람(right)의 합이 limit 이하" 이면 한 보트에 같이 탑승시킨다.
아니면 무거운 사람(right)만 보트에 태워서 보낸다.
left > right가 될 때 까지 반복하면 된다 !


코드


1. Python

def solution(people, limit):
    people.sort()
    left = 0
    right = len(people) - 1
    boats = 0
    while left <= right:
        if people[left] + people[right] <= limit:
            left += 1
        right -= 1
        boats += 1
    return boats

2. JS

function solution(people, limit) {
    const sortPeople = people.sort((a, b) => a - b);
    let left = 0, right = sortPeople.length - 1;
    let boats = 0;
    
    while(left <= right){
        if(sortPeople[left] + sortPeople[right] <= limit) left++;
        right--;
        boats++;
    }
    return boats;
}


결과


0개의 댓글