#유형 : 스택/큐
#난이도 : 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 |
'프로그래머스' 카테고리의 다른 글
#프로그래머스_예산 - Java 자바 (0) | 2020.06.25 |
---|---|
#프로그래머스_큰 수 만들기 - Java 자바 (0) | 2020.06.04 |
#프로그래머스_괄호 변환 - Java 자바 (0) | 2020.06.02 |
#프로그래머스_[1차] 캐시 - Java 자바 (0) | 2020.05.29 |
#프로그래머스_[1차] 뉴스 클러스터링 - Java 자바 (0) | 2020.05.28 |