티스토리 뷰

1. 문제

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

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이��

programmers.co.kr

 

2. 설명

리스트사용해서 풀었다!

리스트 대신 큐 사용해도 될 것같다.

 

3. 코드

import java.util.ArrayList;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int answer = 0;
        ArrayList<Truck> onBridge = new ArrayList<>();
        int currTruck = 0; // 현재 트럭 번호
        int overTruck = 0; // 다리를 지난 트럭 수
        int currWeight = 0; // 현재 다리 위 무게
        
        while(overTruck < truck_weights.length) {
            if(onBridge.size() > 0 && answer - onBridge.get(0).enterTime == bridge_length) {
                currWeight -= onBridge.get(0).weight;
                onBridge.remove(0);
                overTruck++;
            }
            if(currTruck < truck_weights.length) {
                if(currWeight+truck_weights[currTruck] <= weight) {
                    onBridge.add(new Truck(truck_weights[currTruck],answer));
                    currWeight += truck_weights[currTruck];
                    currTruck++;
                }    
            }
            answer++;
        }
        return answer;
    }
    static class Truck {
        public int weight;
        public int enterTime;
        private Truck(int weight, int enterTime) {
            this.weight = weight;
            this.enterTime = enterTime;
        }
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday