https://programmers.co.kr/learn/courses/30/lessons/42885
풀이
구명보트를 최대한 적게 사용하여 모든 사람을 구출하기 위해,
가장 먼저 사람들의 몸무게가 담겨있는 배열 people을 Arrays.sort()로 정렬해준다.
몸무게가 가장 적은 사람(people[min])과 가장 많은 사람(people[max])의 합계를 limit와 비교해 구출여부를 따진다.
- 만약 두 명의 몸무게합이 limit가 넘지 않는다면 두 명 다 보트에 태운다.
- 하지만 limit가 넘는다면 몸무게가 많은 사람만 보트에 태운다.
- 만약 min==max인 경우, 남은 마지막 한사람을 보트에 태운다.
전체 코드
import java.util.Arrays;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0; // 구명보트
Arrays.sort(people);
int min=0, max=people.length-1;
for(int i=0;i<people.length;i++){
if(people[min]+people[max]<=limit){ // 두 명 구출
answer++;
min++; max--;
}else{ // 몸무게 많은 사람만 구출
answer++;
max--;
}
if(min==max){ // 한사람만 남았을 때
answer++;
break;
}
if(min>max) break; // 끝
}
return answer;
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 Lv.2 : 가장 큰 정사각형 찾기 (0) | 2022.03.16 |
---|---|
[Java] 프로그래머스 Lv.2 : 타겟 넘버 (0) | 2022.03.16 |
[Java] 프로그래머스 Lv.2 : 소수 찾기 (0) | 2022.03.13 |
[Java] 프로그래머스 Lv.2 : 카펫 (0) | 2022.03.13 |
[Java] 프로그래머스 Lv.2 : H-Index (0) | 2022.03.13 |