[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/42885
[풀이]
문제를 제대로 읽으세요.. 구명보트는 작아서 최대 2명!!! 밖에 탈 수 없다.
따라서 정렬해준 후 가장 무거운 사람과 가장 가벼운 사람의 무게 합이 limit 이내라면 구명보트 수 증가 후 인덱스를 둘 다 이동시켜주고, 아니라면 무거운 사람 혼자 타야하므로 구명보트 수 증가 후 무거운 사람을 가리키는 인덱스만 감소시켜준다.
[코드]
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
//모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return
//사람 정렬
Arrays.sort(people);
int idx = 0; //가장 가벼운 사람
int i = people.length-1;
while(idx <= i){
if(people[i] + people[idx] <= limit){
answer++;
idx++;
i--;
}
else{
//무거운 사람 혼자 타야 함
answer++;
i--;
}
}
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 SQL level2 3월에 태어난 여성 회원 목록 출력하기 - SELECT (0) | 2023.04.27 |
---|---|
[pro] 프로그래머스 level3 43164 여행경로 (c++) - DFS (0) | 2023.04.23 |
[pro] 프로그래머스 level3 1833 캠핑 (Java) (0) | 2023.04.11 |
[pro] 프로그래머스 level2 178870 연속된 부분 수열의 합 (c++) - 투포인터 (0) | 2023.04.10 |
[pro] 프로그래머스 level2 12902 3*n 타일링 (Java) - dp (0) | 2023.03.25 |