반응형
시뮬레이션 문제이다.
문제에 주어진 조건 그대로를 사용하면 된다. 문제처럼 bridge배열을 하나 선언하여 맨처음에 온 트럭을 bridge에 태운채로 시작하였다. 그 후 현재 bridge 무게를 확인하며 다음 트럭이 올라올수 있는 경우 다음 트럭을 태우는 과정 및 움직임을 반복하며 마지막 트럭까지 확인을 하는 과정을 거쳐 문제를 해결하였다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package selfStudy.chap07;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main_bj_13335_트럭 {
static int[] bridge;
public static void main(String[] args) throws Exception {
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 limit = Integer.parseInt(st.nextToken());
int[] arr=new int[n];
st=new StringTokenizer(br.readLine());
for(int i=0;i<n;i++)
arr[i]=Integer.parseInt(st.nextToken());
int time=1;
bridge= new int[w];
int index=0;
bridge[0]=arr[index++]; //첫번째 트럭 올려놓기
while(true) {
if(index==n) //마지막 트럭까지 다봤을경우
break;
move();
time++;
if(weightOnBridge()+arr[index]<=limit) {
//태우기
bridge[0]=arr[index++];
}
}
System.out.println(time+w);
}
static int weightOnBridge() { //현재 다리위 무게
int sum=0;
for(int w : bridge)
sum+=w;
return sum;
}
static void move() { //전체트럭옮기기
for(int i=bridge.length-1;i>0;i--) {
bridge[i]=bridge[i-1];
}
bridge[0]=0;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
반응형
'Algorithm' 카테고리의 다른 글
[BOJ] 1941. 소문난 칠공주 (0) | 2020.04.02 |
---|---|
[BOJ] 14891. 톱니바퀴 (0) | 2020.03.31 |
[BOJ] 14999. 주사위 굴리기 (0) | 2020.03.31 |
[BOJ] 5427. 불 (0) | 2020.03.30 |
[BOJ] 1182. 부분수열의 합 (0) | 2020.03.30 |