본문 바로가기
Problem Solving/Baekjoon

[백준] 13335 트럭 - Data Structure / Java

by graycode 2023. 2. 6.

 문제 링크

 

13335번: 트럭

입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        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> q = new LinkedList<>();
        while (w-- > 0)
            q.offer(0);

        st = new StringTokenizer(br.readLine());
        int time = 0, weight = 0, truck = Integer.parseInt(st.nextToken());

        while (true) {
            time++;
            weight -= q.poll();
            if (weight + truck <= l) {
                weight += truck;
                q.offer(truck);

                if (--n == 0)
                    break;

                truck = Integer.parseInt(st.nextToken());
            } else
                q.offer(0);
        }

        bw.write(String.valueOf(time + q.size()));
        bw.flush();
    }

}

댓글