[Level2] 구명보트




구명보트

프로그래머스

나의 풀이

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

  while (left < right) {
    if (people[left] + people[right] > limit) left++;
    else {
      left++;
      right--;
    }
    answer++;
  }

  return left === right ? ++answer : answer;
}

옛날부터 도전했는데 탐욕법이 어려웠어서 헤매던 코드였는데, 이제는 풀었다!

(한시간은 해맸지만…)

딱 탐욕법 알고리즘에 적합한 문제였던것 같다.!

best 풀이

function solution(people, limit) {
    people.sort(function(a, b){return a-b});
    for(var i=0, j=people.length-1; i < j; j--) {
        if( people[i] + people[j] <= limit ) i++;
    }    
    return people.length-i;
}