참치코더의 꿈 메모장

Javascript / 프로그래머스 - 구명보트(탐욕법) 본문

Javascript

Javascript / 프로그래머스 - 구명보트(탐욕법)

참치깡 2026. 2. 13. 13:37
728x90

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function solution(people, limit){
    people.sort((a, b) => a - b) // 오름차순 정렬 (a, b) => b - a 내림 차순 정렬
 
    let left = 0// 가장 가벼운 사람
    let right = people.length - 1// 가장 무거운 사람
    let boat = 0;
 
    while (left <= right){
        if (people[left] + people[right] <= limit){
            left++// 같이 태움
        }
        right--// 무거운 사람은 항상 태움
        boat++;
    }
 
    return boat;
}
cs

 

- 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해

  필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성하는 문제이다.

 

- 일단 people 배열을 오름차순으로 정렬한다면, 1,2,3,4 형식으로 몸무게가 나열되게 되고, 그중 while 조건을 걸어서

  가장 끝에있는 가장 무거운 사람과 가장 앞에 있는 가벼운 사람을 limit 값과 비교해서 만약에 몸무게가 그보다 

  작다면, 같이 태워서 보낼수 있다. 반대로 무겁다면 혼자 출발해야 하므로, 꼭 무거운 사람은 1번은 보내야 한다.

 

- 이렇게 반복한다면 최소의 보트 운행으로 모든 사람을 보낼수 있고, 그 값을 더한 boat의 수를 return 한다면 값을 

  얻을 수 있다. ^^

 

실행결과 일부 내용 발췌

728x90
Comments