[프로그래머스] 코딩테스트 연습 - 스택/큐 Level 2 다리를 지나는 트럭

uoahy·2021년 9월 14일
0

Solution.java

import java.util.*;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int answer = 1;
        
        Queue<Data> q = new LinkedList<>();
        
        int num = 0;
        for (int i = 0; i < truck_weights.length; i++) {
            while (truck_weights[i] > weight || num == bridge_length) {
                Data d = q.poll();
                answer = d.time;
                weight += d.weight;
                num--;
            }
            
            if (i == truck_weights.length - 1) {
                answer += bridge_length;
                break;
            }
            
            q.offer(new Data(truck_weights[i], answer + bridge_length));
            weight -= truck_weights[i];
            num++;
            answer++;
        }
        
        return answer;
    }
}

class Data {
    int weight;
    int time;
    
    Data(int weight, int time) {
        this.weight = weight;
        this.time = time;
    }
}

처음에 단순히 트럭이 다리를 건너는데 걸리는 시간을 생각하지 못하고 짜다가 막혔다.

스택/큐 문제만 보면 뭔가 수학적으로 풀려는 것 같다.

나중에 다시 도전해봐야겠다.


코드를 짜보았으나 3분의 1이 실패가 떴다.

또 무슨 예외상황을 놓친걸까..


질문하기에서 다른 사람이 올려준 테스트 케이스를 참고하여 해결했다.

예외상황은 항상 생각하기 어려운것같다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글