알고리즘/큐

[프로그래머스] Level2 : 다리를 지나는 트럭 (JAVA)

믕비 2025. 4. 25. 12:52
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이과정]

테케로 문제 이해를 해야 해서 좀 힘들었다.

바보처럼 이해를 못 해서 엄청 헤맸음..ㅠㅜ 그렇게 어려운 문제는 아니었는데

queue를 이용했고 그냥 주어진 순서대로만 무게 되는지 체크해서 트럭 올려두면 된다

 

[코드]

import java.io.*;
import java.util.*;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int time = 0;
        int currentWeight = 0;

        Queue<Integer> bridge = new LinkedList<>();
        for (int i = 0; i < bridge_length; i++) {
            bridge.add(0); // 초기 다리 상태
        }

        Queue<Integer> waiting = new LinkedList<>();
        for (int w : truck_weights) {
            waiting.add(w);
        }

        while (!waiting.isEmpty()) {
            time++;  // 시간 흐름
            currentWeight -= bridge.poll();  // 다리 맨 앞 칸 제거

            //다음 트럭이 올라갔을 때 다리가 감당 가능하면
            if (currentWeight + waiting.peek() <= weight) {
                int nextTruck = waiting.poll();
                bridge.add(nextTruck);
                currentWeight += nextTruck;
            }
            //감당 못 하면
            else {
                bridge.add(0);  // 트럭 대신 빈 자리
            }
        }

        time += bridge_length;  // 마지막 트럭이 다리 통과하는 시간
        return time;
    }
}

반응형

'알고리즘 > ' 카테고리의 다른 글

[백준] 1966 : 프린터 큐  (0) 2023.03.28
[백준] 1158 : 요세푸스 문제  (0) 2023.03.26