[프로그래머스] 구명보트(javascript)

프린이·2021년 6월 10일
1

  • 제 코드는 최선의 방안은 아닙니다.
  • 단순히 기록용, 공유용이니 이 점 보실 때, 참고바랍니다!

🔗 문제 링크

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;
}

❌ 정확성 O // 효율성 X -> 코드

🟡 느낀 점

  • 풀이 과정은 비슷하게 생각했는데 처음엔 구명보트를 타고 간 이들을 아예 배열에서 제외시켰었는데, 이것이 효율성에서 발목을 잡았음.
  • for문의 범위를 조정하면 더 간단했을 문제였는데, 무조건 배열에서 아예 배제시키려해서 오래 걸렸지만 앞으론 생각을 더 단순화시켜서 코딩해야할 것 같다!
profile
주니어 프론트엔드개발자

0개의 댓글