자바/코딩테스트

[프로그래머스] 구명보트 - Java(자바)

대전집주인 2024. 3. 25. 15:55
728x90
SMALL

 

문제 이해

  • 구명보트는 한번에 최대 2명씩 밖에 못탄다.
  • limit 무게보다 낮으면 2명 높으면 1명씩 타야한다.
  • 무게가 낮은 순서대로 오름차순하기
  • 무게가 낮은 사람을 left 변수, 높은 사람을 right 변수 선언
  • 무게가 제일 낮은 사람과 제일 높은 사람의 합이 limit보다 낮거나 같으면 탈출하였기에 left++, right-- 
  • 두 무게의 합이 더 높다면 right-- 로 더 낮은 사람과 매칭을 시켜서 무인도에서 한명씩 나오게 한다.
import java.util.*;
class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        int left = 0;
        int right = people.length - 1;
        
        Arrays.sort(people);
        
        while(left <= right){
            if(people[left] + people[right] > limit){
                right -= 1;
            }else if(people[left] + people[right] <= limit) {
                left += 1;
                right -= 1;
            }
            answer++;
        }
        
        
        
        return answer;
    }
}
728x90
LIST