Algorithm/프로그래머스

[프로그래머스] 다리를 지나는 트럭(자바) / 큐

미스터로즈 2021. 9. 12. 10:31

문제 설명

 

제한 조건

 

문제풀이

import java.util.*;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int answer = 0;
        Queue<Integer> q = new LinkedList<>();
        
        int max = 0;
        for(int i = 0 ; i < truck_weights.length;i++){
            while(true){
                //큐가 비어 있는 경우
                if(q.isEmpty()){
                    q.offer(truck_weights[i]);
                    max+=truck_weights[i];
                    answer++;
                    break;
                }
                //큐가 꽉찬 경우
                if(q.size()==bridge_length){
                    max-=q.poll();
                }
                
                //큐가 다 차지 않은 경우
                //무게가 초과하는 경우
                if(max + truck_weights[i] >weight){
                    q.offer(0);
                    answer++;
                }else{
                    q.offer(truck_weights[i]);
                    max+=truck_weights[i];
                    answer++;
                    break;
                }

            }
        }
        return answer + bridge_length;
    }
}

 

※ 내 생각

자료구조 큐를 이용하는 문제입니다.

이 문제는 경우를 나눠서 큐를 구현하면 되는 문제입니다.

큐가 비어있는경우
큐가 꽉찬 경우

큐가 꽉 차진 않았지만
무게를 초과한 경우
무게를 초과하지 않은 경우

큐에 관련한 문제만 풀면 시간과 메모리가 심하게 들쑥 날쑥 하네요.....