문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
그리디, 투 포인터
풀이
몸무게가 가장 큰 사람을 항상 구명보트에 태우면서
몸무게가 가장 작은 사람을 같이 태울 수 있다면 같이 태우는 방법이 항상 구명보트를 제일 적게 쓸 수 있다.
따라서 몸무게를 오름차순으로 정렬한 후
남아있는 사람의 몸무게 중 가장 낮은 몸무게의 인덱스를 가리키는 left 와
남아있는 사람의 몸무게 중 가장 큰 몸무게의 인덱스를 가리키는 right 를 정하고,
모든 사람을 다 태울때까지 (left > right)
구명보트를 하나 사용(answer++)하면서 몸무게가 가장 높은 사람을 태우고(right--)
몸무게가 가장 낮은 사람도 태울 수 있다면(people[left] + people[right] <= limit) 같이 태운다(left++)
코드
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
Arrays.sort(people);
int answer = 0;
int left = 0;
int right = people.length - 1;
while(left <= right) {
if(people[left] + people[right] <= limit)
left++;
right--;
answer++;
}
return answer;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 단체사진 찍기 (Java) (0) | 2022.11.03 |
---|---|
[프로그래머스] 카카오프렌즈 컬러링북 (Java) (0) | 2022.11.02 |
[프로그래머스] 큰 수 만들기 (Java) (0) | 2022.11.01 |
[프로그래머스] 햄버거 만들기 (Java) (0) | 2022.11.01 |
[프로그래머스] 옹알이 (2) (Java) (0) | 2022.11.01 |