프로그래머스
#프로그래머스_다리를 지나는 트럭 - Java 자바
ukyonge
2020. 6. 4. 17:20
#유형 : 스택/큐
#난이도 : lv2
# 다리에 올라온 트럭을 먼저 처리하고, 그 다음 트럭을 올려보내는 순서로 구현하면 된다. 다음 트럭을 올릴 때는 현재 다리의 총 중량과 다음 트럭의 합을 중량한계값과 비교하면 된다.
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
27
28
29
30
31
|
public static int solution(int bridge_length, int weight, int[] truck_weights) {
int time = 0;
Queue<Integer> wait = new LinkedList();
Queue<Point> bridge = new LinkedList();
for(int i=0; i<truck_weights.length; i++)
wait.add(truck_weights[i]);
int total=0;
while(!wait.isEmpty() || !bridge.isEmpty()){
time++;
if(!bridge.isEmpty()){
Point p = bridge.peek();
if(time - p.y >= bridge_length){
total -= p.x;
bridge.poll();
}
}
if(!wait.isEmpty()){
if(total + wait.peek() <= weight){
int tmp = wait.poll();
total += tmp;
bridge.offer(new Point(tmp, time));
}
}
}
return time;
}
|
cs |