
-Code
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
// 순서대로 정렬
Arrays.sort(people);
// 덱에 데이터 넣기
Deque<Integer> dq = new ArrayDeque<>();
for (int person : people) {
dq.addLast(person);
}
// 덱을 돌면서 확인
while(!dq.isEmpty()) {
// 가장 무거운 사람 꺼내기
int heavy = dq.pollLast();
// 현재 가장 무거운 사람 + 가장 가벼운 사람 합이 리미트 이하면
// 같이 태우기
if (!dq.isEmpty() && dq.peekFirst() + heavy <= limit) {
dq.pollFirst();
}
// 구명 보트 이동 횟수 증가
answer++;
}
return answer;
}
}
처음에는 가벼운 사람부터 검사해서 보트로 이동시켜서 틀렸습니다. 그래서 힌트를 얻은 게 가장 무거운 사람과 가벼운 사람을 더한 값을 비교해서 해보라는 것을 보고 해결할 수 있었습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 멀리 뛰기 (0) | 2026.01.02 |
|---|---|
| [프로그래머스/Java] 행렬의 곱셈 (0) | 2026.01.02 |
| [백준/Java] 20733번 Triple Texting (0) | 2026.01.02 |
| [프로그래머스/Java] 타겟 넘버 (0) | 2026.01.01 |
| [LeetCode/Java] Max Number of K-Sum Pairs (0) | 2026.01.01 |