프로그래머스 Lv2 다리를 지나는 트럭 Java

Android Chen·2021년 11월 5일
0
post-custom-banner

문제설명

https://programmers.co.kr/learn/courses/30/lessons/42583

구현방법

  • 현재 다리에 트럭을 올릴 수 있는지 확인하고 올릴 수 있다면 큐에 넣고 무게의 합을 저장함

  • 만약 다리의 칸은 비어있지만 무게의 초과로 올릴 수 없는 경우 무게가 0인 트럭을 올린다고 가정함.

  • 현재 다리가 꽉 차있다면 마지막차는 목적지 바로 전이므로 다리(큐)에서 제거함.

  • 현재 코드에서는 마지막 트럭이 다리에 올라가는 시점 까지만 계산되어 있어 마지막트럭이 다리를 지나기 위한 시간인 다리의 길이를 더함

코드

import java.util.*;
class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        Queue<Integer> q = new LinkedList<>();
        int time = 0;
        int sum = 0;
        int i=0;
        while(i<truck_weights.length){
            if(q.size()==bridge_length){
                sum -= q.poll();    
            }
            if(truck_weights[i]+sum<=weight&&q.size()<bridge_length){
                sum += truck_weights[i];
                q.add(truck_weights[i]);
                i++;
            }
            else if(truck_weights[i]+sum>weight&&q.size()<bridge_length){
                q.add(0);
            }
            time++; 
        }
        return time+bridge_length;
    }
}
profile
https://github.com/Userz1-redd
post-custom-banner

0개의 댓글