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해서
답을 구했습니다.