본문 바로가기

Programmers/Level2

구명보트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        int i = 0, li = limit;
        Deque<Integer> dq = new ArrayDeque<Integer>();
        Arrays.sort(people);
        
        for (i = 0; i < people.length; i++) {
            dq.add(people[i]);
        }
        while (!dq.isEmpty()) {
            answer++;
            // 무게가 많이 나가는 사람부터 태움
            li -= dq.pollLast();
            // 무게가 가벼운 사람이 탈 수 있는 경우
            if (!dq.isEmpty() && dq.peek() <= li)
                dq.poll();
            li = limit;
        }
        return answer;
    }
}
cs

최대 2명이 탈 수 있는 구명보트에서 무거운 사람부터 태웠다.

이를 앞 뒤에서 손쉽게 뺄 수 있는 Deque로 구현하였다.

'Programmers > Level2' 카테고리의 다른 글

[1차] 프렌즈4블록  (0) 2021.07.27
점프와 순간 이동  (0) 2021.07.27
영어 끝말잇기  (0) 2021.07.25
가장 큰 정사각형 찾기  (0) 2021.07.24
[1차] 캐시  (0) 2021.07.24