다리를 지나는 트럭(java)

최준근·2022년 4월 20일
0

java알고리즘

목록 보기
61/63

문제설명

생각하기

  • 먼저 들어간 트럭이 먼저 나오기 때문에 Queue를 사용

내 풀이

import java.util.LinkedList;
import java.util.Queue;
class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int time = 0;
        int now_weight = 0; // 현재 다리를 건너는 트럭의 총 무게
        int idx =0; //트럭들의 무게를 참조할 변수
       //1. Queue를 선언
        Queue<Integer> Q = new LinkedList<>();
        
        while(true){
            //2. 반복문의 종료 조건
            if(idx == truck_weights.length) break;
            
            //3. Queue가 꽉 찼을 때 
            if( Q.size() == bridge_length) now_weight -= Q.poll();
            //4. 다리에 가능하중까지 트럭이 올라갔을때
            else if( now_weight + truck_weights[idx] > weight){
                Q.offer(0);
                time++;
            //5. 그 외엔 전부 Queue에 트럭을 넣어준다
            }else{
                Q.offer(truck_weights[idx]);
                now_weight += truck_weights[idx];
                time++;
                idx++;
            }
        }
        //6. 마지막으로 올라간 트럭은 빠져나오지 못하고 끝나기 때문에 시간 + 다리길이
        return time + bridge_length;
    }
}
profile
느려도 좋으니 꾸준하게

0개의 댓글