제출 코드
- 사용 알고리즘 :
자료구조
큐에 매 초마다 순서가 된 트럭이 들어올 수 있으면 넣고 아니면 -1을 넣어서, 큐의 길이가 다리 길이만큼 되었을 때마다 맨 앞의 값을 빼는 방식으로 풀었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
Queue<Integer> queue = new LinkedList<Integer>();
int time=0, idx=0, cnt=0, remain_weight=weight, total=truck_weights.length;
while(cnt<total){
if(bridge_length<++time) {
int truck = queue.poll();
if(truck != -1){
remain_weight += truck;
cnt++;
}
}
if(idx<total){
if(truck_weights[idx]<=remain_weight) {
remain_weight -= truck_weights[idx];
queue.add(truck_weights[idx++]);
}else{
queue.add(-1);
}
}
}
return time;
}
}