문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/42885
접근방법
최대 2명!!
제한 조건이 걸려있기 때문에 딱히 어려운 문제는 아니였다.
먼저 정렬해야겠다는 생각이 들어서 오름차순 정렬을 해줬다.
가장 가벼운 사람(왼쪽=0)과 가장 무거운 사람(오른쪽=배열길이-1)부터 시작해서 그 다음으로 무거운 사람, 그 다음 무거운 사람...
쭉 비교해보고 두 사람의 무게의 합이 limit 범위 내의 무게이면 인덱스를 앞 뒤로 하나씩 땡겨주면 된다.
조건에 만족하지 않으면 매치될 수 없는 경우이기 때문에 오른쪽 인덱스만 감소시켜준다.
코드
function solution(people, limit) {
var answer = 0;
people.sort((a, b) => a-b); // 오름차순 정렬
let left = 0; //가장 가벼운 사람의 인덱스
let right = people.length - 1; //가장 무거운 사람의 인덱스
while (left <= right) {
if (people[left] + people[right] <= limit) {
left++;
right--;
} else {
right--;
}
answer++;
}
return answer;
}
결과
'Algorithm' 카테고리의 다른 글
[Programmers]가장 큰 정사각형 찾기/JS (1) | 2024.01.28 |
---|---|
[Programmers]게임 맵 최단거리/JS (1) | 2024.01.23 |
[Programmers]하노이의 탑(12946번)/JS (1) | 2024.01.21 |
[Programmers]기능개발(42586번)/JS (1) | 2024.01.15 |
[Programmers]할인 행사(131127번)/JS (2) | 2024.01.14 |