[Programmers][Java] 구명보트

HyeBin, Park·2021년 8월 22일
0

Programmers

목록 보기
23/26
post-thumbnail

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

📒 문제

📒 제한사항

🌻 코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        List<Integer> list = new ArrayList<>();
        
        Arrays.sort(people); // 오름차순 정렬
        for(int i : people) list.add(i); // list에 추가 
        
        while (!list.isEmpty()){
            // 보트에 한명만 남는 경우
            if(list.size()==1) {
                answer++;
                break;
            }
            // 제일 가벼운 사람과 무거운 사람의 합이 limit보다 큰 경우
            if(list.get(0)+list.get(list.size()-1) > limit){
                answer++;
                list.remove(list.size()-1); // 무거운 사람은 보트를 혼자 타야한다.
            }
            // 제일 가벼운 사람과 무거운 사람의 합이 limit보다 작은 경우 
            else {
                answer++; // 두사람이 함께 탈출 한다. 
                list.remove(list.size()-1); // 무거운 사람부터 먼저 list에서 제거 해줘야한다. 
                list.remove(0);
            }
        }
        return answer ;
    }
}

💡 정리하기

👉 처음에는 for문만 무작정 사용해서 풀었는데 문제가 잘 풀리지 않았다. list를 이용해서 즉시 제거 하는 방법이 더 빠를 것 같아서 list를 사용하였다.

0개의 댓글