- people 배열을 정렬하고 사람의 위치를 알려주기 위해 idx 변수를 선언한다.
- 몸무게가 가장 무거운 사람부터 최소+최대 몸무게가 limit보다 작거나 같을 때 idx랑 answer를 증가시킨다.
- 그렇지 않은 경우 answer만 증가하고 idx 위치는 그대로 냅둔다.
/*
* 프로그래머스 Lv2 - 구명보트
* 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42885
*/
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
int idx = 0;
Arrays.sort(people);
for(int i = people.length-1; i>= idx; i--) {
if(people[i]+people[idx] <= limit) {
idx++;
answer++;
}
else {
answer++;
}
}
return answer;
}
}
문제를 처음보았을 때 지문이 길어서 생각보다 어려운 문제구나 생각을 하였는데 읽어보니 조합을 통해서 최소의 구명보트 횟수를 구하는거였다. 그래서 일단은 정렬을 하면 좋겠다 생각해서 정렬을 하였고 최소+최대를 더하는 방식으로 하였더니 문제를 해결할 수 있었다.