구명보트

Happhee·2022년 2월 4일
0

[ Lv2 ] programmers

목록 보기
14/32
post-thumbnail

해당 문제는 Greedy알고리즘을 활용한 것이다.

📝 구명보트

🖥 나의 JS 코드

처음에는 people 자체를 splice 메서드를 활용하여 문제를 해결하려 했다
하지만, splice 메서드가 시간초과라는 오류를 가져와 이는 올바른 답안으로 인정되지 않았다

function solution(people, limit) {
    var answer = 0;
 
    people = people.sort((a,b)=> a-b)
  
    while(people.length != 0){
        answer++;
        const boat = people[0];
        for(let j = people.length-1; j > 0 ; j--){
            if(boat + people[j] <= limit){
                people.splice(j,1);
                break;
            }
        }
        people.shift();
    }

    return answer + people.length;
}

다른 답안을 생각하다
배열을 조작하는 대신 배열 값을 가져오는 방법을 index로 하여 문제를 해결하였다.
단순히 answer의 값만 필요하기에 배열을 굳이 바꿀 필요는 없었다

최종 코드는 다음과 같다👇

function solution(people, limit) {
    let answer = 0;
    let [front, end] = [0, people.length-1];
  
  // 오름차순으로 정리  
    people.sort((a,b)=> a-b);
 // 시작과 끝이 엇갈리면 종료
    while(front <= end){
        if(people[front] + people[end] <= limit){
            front +=1;
            end -=1;
        } else {
            end -= 1;
        } 
        answer +=1;
    }
    return answer;
}
profile
즐기면서 정확하게 나아가는 웹프론트엔드 개발자 https://happhee-dev.tistory.com/ 로 이전하였습니다

0개의 댓글