[JavaScript][Programmers] 구명보트

조준형·2021년 7월 9일
0

Algorithm

목록 보기
20/142
post-thumbnail

🔎 구명 보트

❓ 문제링크

https://programmers.co.kr/learn/courses/30/lessons/42885

📄 제출 코드

function solution(people, limit) {

    people.sort((a, b) => b - a);
    var answer = 0;
    let front = 0;
    let back = people.length -1;
    while (front < back) {
        if (people[front] + people[back] <= limit) {
            front++;
            back--;
        } else {
            front++;
        }
        if (front == back) answer++;
        answer++;
    }

    return answer;
}
let people = [70, 50, 80, 50];
// let people = [70, 50, 80];
let limit = 100;
console.log(solution(people, limit))

문제를 읽고 큰거부터 정렬해서 앞뒤로 더하면서 세면 되겠다 싶어서 하니까 다행이도 바로 되어 생각보다 금방 풀렸다.

front : 시작, back : 끝
내림차순으로 정렬 : [80,70,50,50]
front가 back보다 작으면 계속 반복하는데,
front이 값이랑 back의 값을 더한게 limit보다 작으면, 배를 탄 거니까 front++, back--하고, answer를 하나씩 증가.
그렇게 front와 back이 같아지면 마지막 가운데 하나가 남은거니까 answer+1해서
답을 구했습니다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글