본문 바로가기

알고리즘/백준

[JAVA]백준_13335_트럭

문제 : 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

문제 유형 : 구현

 

풀이방식 : 문제에 있는 내용을 while문과 배열로 구현, 배열돌리기 유의!

         

 

소스코드

package BOJ;

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

public class BOJ_13335_트럭_Main {

	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()); // 다리의 최대하중
		
		st = new StringTokenizer(br.readLine(), " ");
		int[] truck = new int[n]; // 트럭 무게
		int[] bridge = new int[w]; // 다리 상태
		boolean[] visited = new boolean[n]; // 사용한 트럭
		
		for (int i = 0; i < n; i++) {
			truck[i] = Integer.parseInt(st.nextToken());
		}
		int time = 0;
		int weight = 0; // 현재 다리의 무게
	
		while(true) {
			time++; // 1. 시간증가
			
			weight-=bridge[w-1]; // 2. 현재 다리의 무게에서 다리의 마지막칸에 있는 무게 빼기
		
			for (int i = w-1; i > 0; i--) { // 3. 다리 한칸씩 이동
				bridge[i] = bridge[i-1]; 
			}
			
			int now_truck = -1; // 4. 현재 이동할 차례 트럭 
			for (int i = 0; i < n; i++) {
				if(!visited[i]) {
					now_truck = i;
					break;
				}
			}
			
			if(now_truck!=-1&&weight+truck[now_truck]<=L) {
				// 5. 다리에 현재 이동할 차례의 트럭 무게가 최대하중 이하이면 bridge[0]에 현재 이동할 차례의 트럭 넣기 
				weight+=truck[now_truck];
				visited[now_truck] = true;
				bridge[0] = truck[now_truck]; 
			}else {
				bridge[0] = 0; 
			}
			
			if(now_truck==-1&&weight==0) break;
		}
		
		System.out.println(time);
		
	}

}

 

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

[JAVA]백준_5427_불  (0) 2021.01.25
[JAVA]백준_1260_DFS와BFS  (0) 2021.01.24
[JAVA]백준_10819_차이를최대로  (0) 2021.01.19
[JAVA]백준_10974_모든 순열  (0) 2021.01.19
[JAVA]백준_10597_순열장난  (0) 2021.01.18