티스토리 뷰

Algorithm

[백준] S1 13335 트럭 (java)

코딩브론즈 2021. 7. 30. 00:30

https://www.acmicpc.net/problem/13335

 

13335번: 트럭

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

www.acmicpc.net

 

풀이

 

1) 현재 다리 위에 건너고 있는 트럭의 무게를 저장할 큐 trucks, 입력 받은 트럭을 저장할 큐 bridge, 현재 다리위의 총 무게를 저장할 변수 sum을 생성한다.

2) bridge의 초기 상태는 다리 길이 w 만큼 0을 넣는다.

3) bridge가 텅텅 빌때까지 계속 하나씩 뽑을 것이다. while()

3-1) 먼저 bridge에서 빠진 트럭의 무게를 sum 에서 뺀다.

3-2) 만약 아직 건너야 할 트럭이 남아 있다면 먼저 그 트럭이 다리에 올라왔을 경우 sum이 최대 하중을 초과 하는지 확인한다.

3-2-1) 초과할 경우 bridge에 올리면 안된다. 트럭 대신 0을 넣는다.

3-2-2) 초과하지 않을 경우 해당 트럭을 bridge에 올리고 sum 에 해당 트럭의 무게를 더한다..

3-3) 시간을 1 증가 시킨다.

4) 시간을 출력한다.

 

주의사항

 

1) w가 길이고 L이 무게이다;;

 

package com.baekJoon;

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

public class BJ_S1_13335_트럭 {
	static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tokens;
	static int N,W,L;
	public static void main(String[] args) throws NumberFormatException, IOException {
		input = new BufferedReader(new StringReader(src));
		tokens = new StringTokenizer(input.readLine());
		N = Integer.parseInt(tokens.nextToken());
		W = Integer.parseInt(tokens.nextToken());
		L = Integer.parseInt(tokens.nextToken());
		tokens = new StringTokenizer(input.readLine());
		Queue<Integer> trucks = new LinkedList<>();
		for(int n=0; n<N; n++) {
			trucks.offer(Integer.parseInt(tokens.nextToken()));
		}
		
		Queue<Integer> bridge = new LinkedList<>();
		for(int w=0; w<W; w++) {
			bridge.offer(0);
		}
		int cnt = 0;
		int sum = 0;
		while(!bridge.isEmpty()) {
			sum -= bridge.poll();
			if(!trucks.isEmpty()) {
				if(sum + trucks.peek() <= L) {
					int newTruck = trucks.poll();
					sum += newTruck;
					bridge.offer(newTruck);
				}else {
					bridge.offer(0);
				}
			}
			cnt++;
		}
		System.out.println(cnt);
	}

	static String src =
			"4 2 10\r\n" + 
			"7 4 5 6";
}

 

후기

 

 자료구조 Queue를 복습한다는 의미로 좋은 문제이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함