[Queue] 13335번 - 트럭

안수진·2023년 12월 22일

Baekjoon

목록 보기
12/55
post-thumbnail

🔗 문제 링크

[백준] 13335번 - 트럭

📝 풀이

트럭의 무게는 truck 큐에 차례로 추가
다리의 길이 만큼 bridge 큐에 모두 0으로 추가
bridgeWeight : 현재 다리의 하중

큐의 확인 연산 메소드 peek()을 알고있다면 바로 풀 수 있는 문제였다.
truck의 무게 + 현재 다리의 하중 <= 다리 최대 하중
이 조건에서 peek()을 생각해내지 못해서 많은 시간을 고민했다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class 트럭_13335 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int n = Integer.parseInt(st.nextToken()); // 다리 건너는 트럭 
        int w = Integer.parseInt(st.nextToken()); // 다리 길이
        int L = Integer.parseInt(st.nextToken()); // 다리 최대 하중
        
        Queue<Integer> truck = new LinkedList<>();
        Queue<Integer> bridge = new LinkedList<>();
        
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i < n; i++) {
        	truck.offer(Integer.parseInt(st.nextToken()));
        }
        
        
        for(int i = 0; i < w; i++) {
        	bridge.offer(0);
        }
        
        int bridgeWeight = 0;
        int time = 0;
        
        while(!bridge.isEmpty()) {
        	time++;
        	bridgeWeight -= bridge.poll();
        	
        	if(!truck.isEmpty()) {
        		if(truck.peek() + bridgeWeight <= L) {
        			bridgeWeight += truck.peek();
        			bridge.offer(truck.poll());
        		}
        		else {
        			bridge.offer(0);
        		}
        		
        	}
        }
        
        System.out.println(time);
       
	}
}
profile
항상 궁금해하기

0개의 댓글