트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다.
예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
Queue<Integer> wait = new LinkedList<>();
Queue<Integer> bridge = new LinkedList<>();
for(int t : truck_weights) wait.add(t);
for(int i = 0; i<bridge_length; i++) bridge.add(0);
int time = 0;
while(!wait.isEmpty()){
time++;
bridge.poll();
if(sumWeight(bridge)+wait.peek()<=weight){
bridge.add(wait.poll());
}else{
bridge.add(0);
}
}
int cnt=0;
for(int b : bridge) if(b>0) cnt++;
int answer = time + (bridge_length-cnt) + cnt;
return answer;
}
public int sumWeight(Queue<Integer> queue){
int sum = 0;
for(int q : queue){
sum+=q;
}
return sum;
}
}
정확성: 100.0
합계: 100.0 / 100.0
[프로그래머스/Python] Lv1. 모의고사 (0) | 2021.10.02 |
---|---|
[프로그래머스/Python] Lv1. 두 정수 사이의 (0) | 2021.07.18 |
[프로그래머스/Python] Lv1. 제일 작은 수 제거하기 (0) | 2021.07.16 |
[프로그래머스/Python] Lv1. 2016년 (0) | 2021.07.14 |
[프로그래머스/SQL] Lv1. 루시와 엘라 찾기 (0) | 2021.07.11 |
댓글 영역