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

 

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

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

programmers.co.kr

 

그리디 알고리즘, 레벨2 문제이며 문제를 자세히 보는것이 중요하다.

 

"구명보트는 하나에 2명까지만 탈 수 있다"

 

이거를 체크하지 않아서, 통과를 하지 못했었는데 위 문구만 보면 그렇게 어려운 문제는 아니다.

다음와 같이 해결하면 된다.

 

  • 몸무게 순 오름차순 정렬
  • 가장 높은 몸무게 + 가장 낮은 몸무게로 통과 여부 체크

 

예제 코드는 아래와 같다.

import java.util.*;
class Solution {
    public static int solution(int[] people, int limit) {
        int answer = 0;
        Arrays.sort(people);
        boolean visit[] = new boolean[people.length];
        int min = 0;
        for (int i = people.length-1; i>=min; i--) {
            if (people[i] + people[min] <= limit) {
                min++;
                answer++;
            } else {
                answer++;
            }
        }
        return answer;
    }
}

+ Recent posts