[프로그래머스 레벨 2 JavaScript] '구명보트' 풀이

6063 단어 JavaScriptJavaScript

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42885

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

  while (people.length > 0) {
    if (people[0] + people[1] <= limit) {
      people.shift();
      people.shift();
      answer++;
    } else {
      people.shift();
      answer++;
    }
  }
  return answer;
}

틀린 풀이: 처음에 단순히 큰놈들 부터 뺴나가는 식으로 구현했더니 입출력 예만 맞고 대부분 테스트케이스에서 틀림

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

  for (let i = 0, j = people.length - 1; i <= j; i++) {
    if (people[i] + people[j] <= limit) {
      j--;
      answer++;
    } else {
      answer++;
    }
  }
  return answer;
}

다른분의 풀이: 큰놈과 작은놈 하나를 골라 limit제한이 안걸리면, 두 사람이 빠지고, 구명 보트 개수 추가
그렇지 않으면 가장 무거운 사람만 빠지고 구명보트 개수 추가

좋은 웹페이지 즐겨찾기