개발하는 두부

[Programmers] 구명보트 (Java)

by 뚜부니

 

 

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

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

programmers.co.kr

 

이 문제는 무인도에 갇힌 사람들을 구출하기 위해서 제한된 크기의 구명보트가 몇 개 필요한지 구하는 문제입니다.

그리고 하나의 구명보트에는 최대 2명의 사람이 탈 수 있습니다.

 

이 문제는 다음과 같은 방식으로 풀면 됩니다.

  1. 몸무게가 무거운 사람과 가벼운 사람의 합이 구명보트 크기를 넘는지 확인한다.
  2. 합이 구명보트 무게보다 큰 경우 무거운 사람만 태워보낸다.
  3. 합이 구명보트 무게보다 작거나 같은 경우 무거운 사람과 가벼운 사람을 함께 태워보낸다.
import java.util.*;

class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        int start = 0, end = people.length - 1;
        
        Arrays.sort(people);
        
        while (start <= end) {
            if ((people[start] + people[end]) <= limit) // 합이 작은 경우, 몸무게 작은 사람 큰 사람 함께 태움
                start++;
            end--; // 합이 큰 경우, 몸무게가 큰 사람만 태움 => 무조건 몸무게가 큰 사람은 타는 구조
            answer++; // 매 수행마다 구명보트에 타는 사람 존재
        }
        
        return answer;
    }
}

블로그의 정보

개발하는 두부

뚜부니

활동하기