개발 공부 기록
[Baekjoon 13335번/JAVA] 트럭 (Queue) 본문
Question
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
💡 Solution
time++; : 1초씩 증가시킵니다.
weight -= bridge.poll(); : 1초가 지날 때마다 하나의 트럭이 다리 위에서 빠집니다. (W 길이까지는 0이 빠집니다.)
if(!truck.isEmpty()) {} : 다리를 건너지 않은 트럭이 남아있을 경우
if(weight + truck.peek() <= L) : 현재 다리에 올라간 트럭의 무게 + 다리에 올라가지 않은 맨 앞의 트럭의 무게 합이 L을 넘지 않는다면
weight += truck.peek(); : 다음 트럭(다리에 올라가지 않은 맨 앞의 트럭)의 무게를 추가합니다.
bridge.offer(truck.poll()); : 다음 트럭(다리에 올라가지 않은 맨 앞의 트럭)을 다리에 올립니다.
else {bridge.offer(0);} : L을 넘는다면 다리 위에 아무것도 올리지 않습니다.
위 과정을 다리가 empty일 때까지 반복한 후, 최종적으로 걸린 시간 time을 출력하면 됩니다.
💻 Code
package BaekJoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class BJ13335 {
static Queue<Integer> truck;
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());
truck = new LinkedList<>();
st = new StringTokenizer(br.readLine(), " ");
for(int i = 1; i <= N; i++) {
truck.offer(Integer.parseInt(st.nextToken()));
}
int time = 0;
int weight = 0; //다리 위에 올라간 트럭의 무게 합
Queue<Integer> bridge = new LinkedList<Integer>();
for(int i = 0; i < W; i++) {
bridge.add(0);
}
while(!bridge.isEmpty()) {
time++;
weight -= bridge.poll();
if(!truck.isEmpty()) {
if(weight + truck.peek() <= L) {
weight += truck.peek();
bridge.offer(truck.poll());
} else {
bridge.offer(0);
}
}
}
System.out.println(time);
}
}
'PS > Implement' 카테고리의 다른 글
[SWEA 3499번 /JAVA] 퍼펙트 셔플 (1) | 2023.11.04 |
---|---|
[SWEA 5215번 /JAVA] 햄버거 다이어트 (0) | 2023.11.02 |
[Baekjoon 1966번/JAVA] 프린터 큐(Queue) (1) | 2023.10.21 |
[SWEA 1289번 /JAVA] 원재의 메모리 복구하기 (0) | 2023.10.18 |
[SWEA 1966번 /JAVA] 숫자를 정렬하자 (0) | 2023.10.18 |