function solution(people, limit) {
people.sort((a, b) => a - b);
let left = 0;
let right = people.length - 1;
let boats = 0;
while (left <= right) {
if (people[left] + people[right] <= limit) {
left++;
}
right--;
boats++;
}
return boats;
}
- 몸무게 오름차순 정렬
- 투 포인터 활용 (가장 가벼운 사람 + 가장 무거운 사람)
- left: 가장 가벼운 사람 (배열의 시작)
- right: 가장 무거운 사람 (배열의 끝)
- left + right가 limit 이하이면 두 사람을 함께 태움 → left++, right--
- 초과하면 무거운 사람만 태움 → right--
- 보트 개수 증가 (boats++)
'[LG 유플러스] 유레카 > 코딩테스트' 카테고리의 다른 글
[JAVA]SWEA - 2001 파리 퇴치 (D2) (0) | 2025.02.25 |
---|---|
[JAVA]백준 - 2252번 줄 세우기(골드3) (0) | 2025.02.25 |
[JS]프로그래머스 - 피로도 (Lv.2) (0) | 2025.02.25 |
[JS]프로그래머스 - 프로세스 (Lv.2) (0) | 2025.02.24 |
[JS]프로그래머스 - 기능개발 (Lv.2) (0) | 2025.02.24 |