코딩테스트/프로그래머스 2단계
프로그래머스 2단계 - 다리를 지나는 트럭(스택/큐)
SICDev
2021. 9. 9. 15:55
반응형
https://programmers.co.kr/learn/courses/30/lessons/42583
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
//다리를 지나는 시간
int sec = 0;
//다리에 올라간 무게
int bridge_weight = 0;
//다리
Queue<Integer> que = new LinkedList<>();
//트럭 수 만큼 반복문 실행
for(int truck : truck_weights){
while(true){
//다리가 비어잇다면 트럭 출발
if(que.isEmpty()){
que.add(truck);
bridge_weight += truck;
sec++;
break;
//다리가 꽉찻으면
}else if(que.size() == bridge_length){
//하나 뺀다.
bridge_weight -= que.poll();
//다리에 자리가 잇으면
}else{
//다리에잇는 무게와 새로 들어갈 트럭의 무게가 더 크면
if(bridge_weight + truck > weight){
//시간만 늘린다.
sec++;
//무게가 0인 트럭을 추가함으로써 다리를 채운다.
que.add(0);
}else{
que.add(truck);
sec++;
bridge_weight += truck;
break;
}
}
}
}
//다리의 길이 + 트럭이 지나간 시간
return bridge_length+sec;
}
}
반응형