본문 바로가기
Algorithm/프로그래머스풀이

[알고리즘 문제풀이] 프로그래머스 - 구명 보트 / JAVA(자바)

by 계범 2022. 3. 12.

https://programmers.co.kr/learn/courses/30/lessons/42885

 

코딩테스트 연습 - 구명보트

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5

programmers.co.kr

/**
    1. 2명씩 탑승 가능
    
    2. 구명보트 무게 제한 100kg
    
    3. 구명 보트 최대한 적게 사용
    
    4. 정렬 배열에 투포인터로 처리.
    
    5. 그리디로 가장 작은 몸무게와 가장 큰 몸무게 탑승 처리
    
    
**/

import java.util.*;

class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        
        Arrays.sort(people);
        
        int start = 0;
        int end = people.length-1;
        
        while(start <= end){
            // 2명탑승
            if(people[start] + people[end] <= limit){
                start++;
                end--;
                answer++;
            // 가장 무거운사람 한명 탑승
            }else{
                end--;
                answer++;
            }
        }
        return answer;
    }
}

댓글