[프로그래머스] 구명보트 JavaScript

0

Problem Solving

목록 보기
34/49
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/42885?language=javascript

내 풀이

2명밖에 못태우기때문에, 가벼운 순으로 태우는 것은 비효율적.
정렬한 뒤 가벼운사람과 무거운 사람을 더해서 limit과 비교함.
태울 수 있다면 start값을 올리고 end값을 내린다 (두 사람이 탔기 때문에)
태울 수 없다면 end값을 내린다. (무거운 사람이 혼자 탔기 때문에)

function solution(people, limit) {
    people.sort((a,b)=>a-b)
    let start = 0;
    let end = people.length-1;
    let answer = 0;
    while(start<=end){
        if(start!=end && people[start]+people[end] <= limit){
            start++;
        }
        end--;
        answer++;
    }
    return answer
}

다른 사람 풀이

for문으로 start, end값을 조작한게 신기해서 가져왔다.

function solution(people, limit) {
    var answer = 0;
    people = 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++
    }

    return answer;
}

0개의 댓글