(Greedy) 구명보트

|

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

limit값이 주어지고, 보트에 최대한 많은 사람을 태우는 문제. 배열을 정렬해 놓고 제일 무게가 많이 나가는 사람과 가장 적게 나가는 사람을 차례대로 태워서 count를 증가시켰다.

import java.util.Arrays;

class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        Arrays.sort(people);
        int left = 0;
        int right = people.length-1;
        int remain = limit;

        while(left < right) {

            boolean notLeft = false;
            boolean notRight = false;

            if(people[right] <= remain) {
                remain -= people[right];
                right--;
            }
            else {
                notRight = true;
            }

            if(people[left] <= remain) {
                remain -= people[left];
                left++;
            } else {
                notLeft = true;
            }

            if(notRight && notLeft) {
                answer++;
                remain = limit;
            }

        }
        return answer;
    }
}