https://www.acmicpc.net/problem/13335
문제 분석
- 단순 구현으로 도로 위에 올라갈 수 있는 트럭의 위치가 1씩 변경됨으로 배열을 활용했다. (덱을 활용해서 풀려다가 더 복잡해져서 배열을 활용하였다)
- 시간을 증가시켜가면서 트럭을 이동시키고, 트럭을 이동시키고 나서 맨 앞에 있던 트럭을 빼주고 새로운 트럭을 올릴 수 있다면(무게가 된다면) 새로운 트럭을 도로에 올려준다.
문제 풀이
1) 트럭의 정보를 배열에 입력받는다.
2) 도로에 트럭을 올려서 이동시킨다.
2-1) 다리위 트럭을 1칸씩 이동시킨다.
2-2) 제일 앞에 있던 트럭이 목적지에 도달했다면 도로위 무게(weight)를 빼준다.
2-3) 도로에 새로운 트럭을 올릴 수 있다면 도로위 무게(weight)를 추가시키고 도로배열(road[])에 트럭 정보(truck[truckNum])를 넣어준다. 그리고 이동시킬 트럭의 순서(truckNum)를 증가시킨다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int n, w, L; // 트럭의 수, 다리의 길이, 다리의 최대 하중
private static int[] truck; // 트럭의 무게 정보를 담을 배열
private static int[] road; // 도로위 트럭의 정보를 담을 배열
private static int result; // 최단시간
// main 함수
public static void main(String[] args) throws NumberFormatException, IOException {
input();
}// main 함수 종료
// input 함수
private static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
w = Integer.parseInt(st.nextToken());
L = Integer.parseInt(st.nextToken());
truck = new int[n];
road = new int[w];
// 입력
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
truck[i] = Integer.parseInt(st.nextToken());
}
// 구현
solution();
// 출력
System.out.println(result);
}// input 함수 종료
// 구현
private static void solution() {
int truckNum = 0; // 이동시킬 트럭
int weight = 0; // 다리 위 트럭의 무게
while(truckNum<n) { // 모든 트럭 이동
// 다리 위 트럭 이동시키기
int goal = road[0];
for(int i=0;i<w-1;i++) {
road[i] = road[i+1];
}
road[w-1] = 0;
// 목적지에 도달시킴
if(goal!=0) {
weight -= goal;
}
// 트럭을 하나 더 올림
if(weight+truck[truckNum]<=L) {
road[w-1] = truck[truckNum];
weight += truck[truckNum++];
}
result++;
}
// 마지막 트럭 이동시킴
result += w;
}// solution 함수 종료
}// class 종료
'Algorithm > BOJ' 카테고리의 다른 글
BOJ 16935 배열 돌리기 3 (0) | 2021.06.11 |
---|---|
BOJ 16927 배열 돌리기 2 (0) | 2021.06.09 |
BOJ 16926 배열 돌리기 1 (0) | 2021.06.08 |
BOJ 1932 정수 삼각형 (0) | 2021.04.07 |
BOJ 1890 점프 (0) | 2021.04.07 |