[프로그래머스] 구명보트

fsm12·2023년 8월 8일
0

프로그래머스

목록 보기
55/57
post-thumbnail
post-custom-banner

문제링크

문제 이해

[ 입력형태 / 조건 ]

people
사람들의 몸무게를 담은 배열 | [70, 50, 80, 50] | 무인도에 갇힌 사람은 1명 이상 50,000명 이하, 각 사람의 몸무게는 40kg 이상 240kg 이하

limit
구명보트의 무게 제한 | 100 | 구명보트의 무게 제한은 40kg 이상 240kg 이하, 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없음

[ 문제 ]

사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return

[ 풀이 ]

가장 무거운 사람과 가장 가벼운 사람의 합이 limit보다 크다면 가장 무거운 사람은 누구와도 같이 타지 못함 (그리디)
=> 정렬 + 투포인터



코드

> [성공] 1차 시도 : 정렬 + 투포인터

  • 생각한 풀이 그대로 구현
import java.util.*;

class Solution {
    public int solution(int[] people, int limit) {
        int N = people.length;
        Arrays.sort(people);
        
        int s=0, e=N-1, save=0;
        while(s<e){
            if(limit < people[s]+people[e]){
                e-=1;
            }else{
                s+=1;
                e-=1;
                save+=1;
            }
        }
        return N-save;
    }
} 



post-custom-banner

0개의 댓글