프로그래머스 - [Level 2] 다리를 지나는 트럭(JAVA)

less than 1 minute read

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

카테고리 : 스택/큐

 이런류의 문제는 index관리가 쉽지 않아 '맞왜틀'에 빠진적이 많았다.
 이 문제에서 인덱스를 관리하는 핵심아이디어는 '초 단위'로
 Queue에 push해주는 것이다.
 
 다리를 Queue로 바라보고, 다리가 트럭을 수용할 수 있다면 트럭의 무게를
 그렇지 않다면, 0을 집어넣어 Queue의 size가 Bridge_length일 때
 Queue를 poll 해준다.

소스코드

import java.util.Queue;
import java.util.LinkedList;
class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int answer = 0;
        Queue<Integer> q=new LinkedList<>();
        
        int total=0;
        
        for(int i=0;i<truck_weights.length;i++){
            int w=truck_weights[i];
            while(true){
                if(q.isEmpty()){
                    q.offer(w);
                    total+=w;
                    answer++;
                    break;
                }else if(q.size()==bridge_length){
                    total-=q.poll();
                }
                else{
                    if(total+w>weight){
                        q.offer(0);
                        answer++;
                    }
                    else{
                        q.offer(w);
                        answer++;
                        total+=w;
                        break;
                    }
                }
            }
        }
        return answer+bridge_length;
    }
}

Leave a comment