[ Queue ] νλ¦°ν°
π μ ν μ¬ν
β μΈμ μμ λͺ©λ‘μ μΉΈμΌλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
β κ° μΉΈμλ ν κ°μ λ¬Έμλ§ μμΉν μ μμ΅λλ€.
β λ¬Έμλ 1μ΄μ ν μΉΈλ§ μ΄λν μ μμ΅λλ€.
β μΈμ μμ λͺ©λ‘μ ν¬κΈ°λ bufferSizeμ΄κ³ μ΅λ μ©λ capacities λ§νΌ λ¬Έμλ₯Ό λ΄μ μ μμ΅λλ€.
π μμ
λ§μ½, μΈμ μμ λͺ©λ‘μ ν¬κΈ°κ° 2μ΄κ³ μ΅λ μ©λμ΄ 10KibλΌλ©΄ ν¬κΈ°κ° [7, 4, 5, 6] KibμΈ λ¬Έμλ€μ΄ μ΅λ¨ μκ° μμ μμλλ‘ λͺ¨λ μΈμλλ κ³Όμ μ λ€μκ³Ό κ°μ΅λλ€.
- 1μ΄κ° μ§λλ©΄ μΈμ μμ λͺ©λ‘μλ 7Kib ν¬κΈ°μ λ¬Έμκ° μΆκ°λ©λλ€.
- 2μ΄μΌ λ μΈμ μμ λͺ©λ‘μ μ΅λ μ©λμ΄ 10Kibμ΄κΈ° λλ¬Έμ 4Kib λ¬Έμλ μμ λͺ©λ‘μ λ€μ΄κ° μ μμ΅λλ€. λμμ 7Kib λ¬Έμλ μμ λͺ©λ‘μμ 1μΉΈ μμΌλ‘ μ΄λν©λλ€.
- 3μ΄μΌ λ 7Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μμ λμ νλ¦°ν°κ° μΈμν©λλ€. λμμ 4Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μ μΆκ°λ©λλ€.
- 4μ΄μΌ λ 4Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μμ 1μΉΈ μμΌλ‘ μ΄λν©λλ€. λμμ 5Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μ μΆκ°λ©λλ€.
- 5μ΄μΌ λ 4Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μμ λμ νλ¦°ν°κ° μΈμν©λλ€. λμμ 5Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μμ 1μΉΈ μμΌλ‘ μ΄λν©λλ€. μ΅λ μ©λ 10Kib μ νμΌλ‘ 6Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μΌλ‘ μΆκ°λ μ μμ΅λλ€.
- 6μ΄μΌ λ 5Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μμ λμ νλ¦°ν°κ° μΈμν©λλ€. λμμ 6Kib λ¬Έμκ° μΈμ μμ λͺ©λ‘μ μΆκ°λ©λλ€.
- 7μ΄μΌ λ 6Kib λ¬Έμλ μΈμ μμ λͺ©λ‘μμ 1μΉΈ μμΌλ‘ μ΄λν©λλ€.
- 8μ΄μΌ λ 6Kib λ¬Έμκ° λ§μ§λ§μΌλ‘ μΈμλ©λλ€.
μ μμμμμ κ°μ΄ λͺ¨λ λ¬Έμκ° μΆλ ₯λλλ° κ±Έλ¦¬λ μ΅μ μκ°μ 8μ΄κ° 걸립λλ€.
π μ½λ 곡λΆ
// μνλ μ§ν
// [0. 7] νμ¬ λ¬Έμ:7
// [7, 0] νμ¬ λ¬Έμ:4 -> μ©λ ν¬κΈ° μ΄κ³Ό & μμ
λͺ©λ‘ μ΄λ arr.shift(), arr.push(0)
// [0, 4] νμ¬ λ¬Έμ:4 -> μ©λ ν¬κΈ° ν΅κ³Ό & μ§μ
arr.shift(), arr.push(cur)
// [4, 5] νμ¬ λ¬Έμ:5 -> μ©λ ν¬κΈ° ν΅κ³Ό & μ§μ
+ μμ
λͺ©λ‘ μ΄λ arr.shift(), arr.push(cur)
// [5, 0] νμ¬ λ¬Έμ:6 -> μ©λ ν¬κΈ° μ΄κ³Ό & μμ
λͺ©λ‘ μ΄λ arr.shift(), arr.push(0)
// [0, 6] νμ¬ λ¬Έμ:6 -> μ©λ ν¬κΈ° ν΅κ³Ό & μ§μ
arr.shift(), arr.push(cur)
// [6, 0] νμ¬ λ¬Έμ:6 -> μ©λ ν¬κΈ° ν΅κ³Ό & μμ
λͺ©λ‘ μ΄λ arr.shift(), arr.push(0)
// [0, 0] νμ¬ λ¬Έμ:6 -> μ©λ ν¬κΈ° ν΅κ³Ό & μμ
λͺ©λ‘ μ΄λ arr.shift(), arr.push(0)
// νμ¬ λ°λ³΅μ μΌλ‘ μΌμ΄λκ³ μλ νμλ
// arr.shift() κ³Ό
// 01 μ©λ ν¬κΈ°κ° μ΄κ³Όλμμ λ arr.push(0)
// or
// 02 μ©λ ν¬κΈ°κ° ν΅κ³Όλμμ λ arr.push(νμ¬ λ¬Έμ) μ΄λ€.
function Printer (bufferSize, capacities, documents) {
let count = 0;
let total = 0;
let cur = documents.shift();
let buffer = new Array(bufferSize).fill(0);
buffer.shift();
buffer.push(cur);
total = total + cur;
count++;
while(total){
total = total - buffer.shift();
cur = documents.shift();
if(total + cur <= capacities){
buffer.push(cur);
total = total + cur;
}
else{
documents.unshift(cur);
buffer.push(0);
}
count++;
}
return count;
}
π νλ©΄μ λλμ
μκ°λ³΄λ€ λ΄ λ§μ²λΌ queue ꡬνμ΄ μ½μ§ μμλ€.
λ¨Έλ¦Ώμμμ κ·Έλ €λ³΄λ κ²λ μκ°μ΄ κ½€ κ±Έλ Έκ³ ...
μ λ κ² λμ κ³Όμ μ νλ νλ μ΄ν΄λ³΄λ©΄μ μνλ λ΅μ λλ¬νλ€.
ν΄λ¦°ν μ½λλ₯Ό μ²μλΆν° μ΄€λΌλ½ μ°λ €κ³ μ μ°μ§ λ§μμΌκ² λ€. --> μ€νλ € μκ°μ λ μ‘μλ¨Ήμ .. ^__^