무게의 오름차순으로 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해서 양끝을 포인터로 잡고나서 풀어보자!