개발 공부 일지/JavaScript
[프로그래머스] 구명보트
yelimu
2025. 3. 21. 22:46
https://school.programmers.co.kr/learn/courses/30/lessons/42885
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
탐욕법으로 카테고리 되어있는데 잘 풀리지않아서 투포인터로 풀이하게 됐다
function solution(people, limit) {
var count = 0;
people.sort((a,b)=> b - a)
let left = 0, right = people.length -1;
while(left <= right){
if(people[left] + people[right] <= limit){
left ++;
right --;
count ++;
} else{
left ++;
count ++;
}
}
return count;
}
투포인터가 뭔지는 이제 알겠는데, 언제 left ++ 이고 right --인지 좀 헷갈렸다;
일부 케이스만 통과하기도 하고
결국은 손으로 써가면서 각 케이스마다 어떻게 포인터를 이동할 것인지 이해할 수 있었다.
[다른 사람 풀이]
for문을 써서 투포인터를 적용
function solution(people, limit) {
people.sort(function(a, b){return a-b});
for(var i=0, j=people.length-1; i < j; j--) {
if( people[i] + people[j] <= limit ) i++;
}
return people.length-i;
}