[자바스크립트, 프로그래머스] 구명보트

난이도 : 2

링크 : 


문제리뷰

그리디

1. people을 몸무게순으로 정렬

2. pop => 가장 무거운 사람 태움

3. shift => 가장 가벼운 사람 태움

4. 보트에 못 태우면 출발

5. 반복


소스코드

function solution(people, limit) {
  people.sort((a, b) => a - b);
  let answer = 0;

  while (people.length > 0) {
    let person = people.pop();
    while (person < limit && people.length > 0) {
      if (person + people[people.length - 1] <= limit) {
        person += people.pop();
      } else if (person + people[0] <= limit) {
        person += people.shift();
      } else {
        break;
      }
    }
    answer++;
  }

  return answer;
}

댓글()