๐ ์ ํ ์ฌํญ
โ ์ธ์ ์์ ๋ชฉ๋ก์ ์นธ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
โ ๊ฐ ์นธ์๋ ํ ๊ฐ์ ๋ฌธ์๋ง ์์นํ ์ ์์ต๋๋ค.
โ ๋ฌธ์๋ 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 ๊ตฌํ์ด ์ฝ์ง ์์๋ค.
๋จธ๋ฆฟ์์์ ๊ทธ๋ ค๋ณด๋ ๊ฒ๋ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ ธ๊ณ ...
์ ๋ ๊ฒ ๋์ ๊ณผ์ ์ ํ๋ ํ๋ ์ดํด๋ณด๋ฉด์ ์ํ๋ ๋ต์ ๋๋ฌํ๋ค.
ํด๋ฆฐํ ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ์ดค๋ผ๋ฝ ์ฐ๋ ค๊ณ ์ ์ฐ์ง ๋ง์์ผ๊ฒ ๋ค. --> ์คํ๋ ค ์๊ฐ์ ๋ ์ก์๋จน์ .. ^__^
'the others > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋จธ์ค ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ ํ์ด (0) | 2021.10.12 |
---|---|
Dynamic Programming ๋์ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.10.11 |
Binary Search Tree ๊ตฌํ : pre-order / in-order / post-order (0) | 2021.09.23 |
์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ๋ถ๋ถ ์งํฉ(๋ฉฑ์งํฉ) ๊ตฌํ๊ธฐ (0) | 2021.09.07 |
๋ฐฑ์ค ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ ฅ ๋ฐฉ์ ๋ฉ๋ชจ (0) | 2021.09.04 |
๋๊ธ