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

이상돈·2023년 4월 14일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

출처 : 프로그래머스 - 구명보트

문제

제한사항

📌 내가 생각한 풀이

무게의 오름차순으로 sort한 다음, 가장 무거운사람과 가장 가벼운 사람을 같이 태울 수 있는지 확인, 같이 태운다면 왼쪽포인터는 ++, 오른쪽포인터는 --, 같이 못태운다면 무거운 애를 혼자 태워서 보내야하므로 오른쪽 포인터를 --
function solution(people, limit) {
    var answer = 0;
    people.sort((a,b)=>a-b);
    let p1 = 0;
    let p2 = people.length-1
    while(p1 <= p2){
        //한번에 두명밖에 못탄다는 점 인지
        // 가장 가벼운 사람과 가장 무거운사람이 같이 탈 수 있나?
        if(people[p1] + people[p2] <=limit){
            //탈수있으면 같이 태우자.
            p1++;
            p2--;
        }else{
            //못탄다면 무거운사람 혼자 태우자
            p2--;
        }
        answer++
    }
    return answer;
}

📌 느낀점

더블 포인터를 이용하여 푸는 그리디문제였다. 자주 나오는 유형이므로 꼭 sort해서 양끝을 포인터로 잡고나서 풀어보자!

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글