BOJ_S1_13335
๐ [S1_13335] ํธ๋ญ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class 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());
// ๋ค๋ฆฌ์ ํ
Queue<Integer> bridgeQueue = new LinkedList<>();
// ํธ๋ญ์ ํ
Queue<Integer> truckQueue = new LinkedList<>();
st = new StringTokenizer(br.readLine()," ");
// ํธ๋ญ ๋ฃ๊ธฐ
for(int i=0; i<n; i++){
truckQueue.add(Integer.parseInt(st.nextToken()));
}
// 0์ผ๋ก ๋ค๋ฆฌ ์ด๊ธฐํ ์ํค๊ธฐ
for(int i=0; i<w; i++){
bridgeQueue.add(0);
}
// ์ด ์๊ฐ
int time = 0;
// ๋ค๋ฆฌ์์ ์ด ๋ฌด๊ฒ
int bw =0;
// ๋ค๋ฆฌ๊ฐ ๋น ๋๊น์ง
while(!bridgeQueue.isEmpty()){
// ์๊ฐ ์ถ๊ฐ
time++;
// ๋งจ ๋ง์ง๋ง ๊ฒ ๋นผ๊ธฐ
bw -= bridgeQueue.poll();
// ํธ๋ญ์ด ์์ง ๋จ์๋ค๋ฉด
if(!truckQueue.isEmpty()) {
// ์กฐ๊ฑด์ ๋ง์ผ๋ฉด ๋ฃ๊ธฐ
if (bw + truckQueue.peek() <= L) {
// ๋ค๋ฆฌ์ ํธ๋ญ ๋ฌด๊ฒ ๋ํ๊ธฐ
bw += truckQueue.peek();
// ๋ค๋ฆฌ์ ํธ๋ญ ์ฌ๋ฆฌ๊ธฐ
bridgeQueue.add(truckQueue.poll());
} else {
// ํ ์นธ ์ฉ ๋ฐ๊ธฐ
bridgeQueue.add(0);
}
}
}
System.out.println(time);
}
}
๐ค ๋์ ์๊ฐ
Queue์ FIFO ํน์ฑ์ ์ด์ฉํ๋ฉด ์ ๊ทผ์ ์ฝ๊ฒ ํ ์ ์๋ ๊ฒ ๊ฐ๋ค.
ํธ๋ญ ํ์ ๋ค๋ฆฌ ํ๋ฅผ ์์ฑํด ์ฒ์์ ๋ค๋ฆฌ ํ๋ฅผ 0์ผ๋ก ์ฑ์ด ๋ค ํธ๋ญ์ด ๋ค์ด์ฌ ๋ ๋ง๋ค ์ฒ๋ฆฌ๋ฅผ ์งํํ๋ค.
๋ค๋ฆฌ์์ ์ด ๋ค์ด์ฌ ์ ์๋ ํธ๋ญ๊ฐ์๋ ๋ค๋ฆฌ ํ์ ์ ์ฒด ํฌ๊ธฐ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ณ
์ ์ฒด ๋ฌด๊ฒ๊ฐ ๋์ผ๋ฉด ์๋๋ ๊ฒ์ ํธ๋ญ์ด ๋จ์์ ๋ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ ํธ๋ญ์ ๋ค๋ฆฌ์ ์ถ๊ฐํ๋ค.