문제

코드
function solution(people, limit) {
let sortPeople = people.sort((a, b)=> b - a);
let result = 0;
let start = 0
let end = sortPeople.length - 1
while(start <= end) {
if(sortPeople[start] + sortPeople[end] <= limit) {
result += 1
start += 1;
end -= 1;
} else {
result += 1;
start += 1;
}
}
return result
}
풀이
- people 배열을 내림차순으로 정렬
- while 반복문을 통해 start의 값이 end의 값보다 커질때까지 실행
- sortPeople[start]와 sortPeople[end]의 합이 limit보다 작거나 같으면 result에 1을 더하고 start는 1증가 end는 1감소
- sortPeople[start]와 sortPeople[end]의 합이 limit보다 크면 현재 sortPeople[start]값은 남은 배열의 어떤 요소와 더해도 limit을 초과하기때문에 result에 1을 더하고 start만 1증가
- start가 end보다 커지면 반복문 종료 후 result값 리턴