https://programmers.co.kr/learn/courses/30/lessons/42583
1. 내림차순으로 정렬
2. 제일 무거운 사람과 제일 가벼운 사람의 무게를 더해 무게 제한을 초과하는지 확인
이유 -> 제일 가벼운 사람과도 못타고 가면, 다른 누구와도 함께 탈 수 없으니 무조건 혼자 타게 되기 때문 1) 무게 초과 : 혼자 타고 가야하기때문에 구명보트 사용수를 1더함 2) 무게 초과하지 않음 : 같이 타고 가고 구명보트 사용수에 1을 더함 -> 같이 타고 갔으니 제일 마지막 사람은 이제 다음 번에 보트타고 가는 대상에서 제외 시킴
3. 횟수 반환
function solution(people, limit) {
var cnt = 0;
people = people.sort((a,b) => b-a);
var peopleLength = people.length;
for(var i = 0; i < peopleLength; i++){
if(people[i] + people[peopleLength - 1] <= limit){
peopleLength--;
}
cnt++;
}
return cnt;
}
- 풀이 과정은 비슷하게 생각했는데 처음엔 구명보트를 타고 간 이들을 아예 배열에서 제외시켰었는데, 이것이 효율성에서 발목을 잡았음.
- for문의 범위를 조정하면 더 간단했을 문제였는데, 무조건 배열에서 아예 배제시키려해서 오래 걸렸지만 앞으론 생각을 더 단순화시켜서 코딩해야할 것 같다!