728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42583
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
모든 트럭이 다리를 건너려면 최소 몇 초?
최대 bride_length대 올라갈 수 있음
다리는 최대 weight 무게까지 가능
다리 길이만큼 이동해야하니까 > 초반에 큐를 다리 길이만큼 0으로 채워서 시작하기
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
ArrayDeque<Integer> bridge = new ArrayDeque<>();
int time = 0; // 경과 시간
int curWeight = 0; // 다리 위 총 무게
int idx = 0; // 다음에 올라갈 트럭 인덱스
// 다리 길이만큼 0(빈 칸)으로 채워 시작
for (int i = 0; i < bridge_length; i++) bridge.offerLast(0);
// 모든 트럭을 다리에 올릴 때까지 반복
while (idx < truck_weights.length) {
time++;
// 한 칸 전진: 맨 앞 칸이 다리에서 내려감
curWeight -= bridge.pollFirst();
// 다음 트럭이 올라갈 수 있으면 올리고, 아니면 빈 칸(0) 추가
if (curWeight + truck_weights[idx] <= weight) {
bridge.offerLast(truck_weights[idx]);
curWeight += truck_weights[idx];
idx++;
} else {
bridge.offerLast(0);
}
}
// 마지막 트럭이 다리를 완전히 건너는 데 남은 시간 추가
return time + bridge_length;
}
}
00
07
70
04
45
50
06
'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 괄호 회전하기 : Java (0) | 2025.09.26 |
|---|---|
| [Lv.2] 문자열 압축 : Java (0) | 2025.09.26 |
| [Lv.2] 짝지어 제거하기 : Java (0) | 2025.09.26 |
| 조이스틱 : Java (1) | 2025.07.05 |
| [Lv.2] 기능개발 : Java (3) | 2025.07.05 |