๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[ํ๋ก๊ทธ๋๋จธ์ค 42586] ๊ธฐ๋ฅ๊ฐ๋ฐ (Javascript)
โ๏ธIdea Sketch
2021-07-09
1. ๋ฌธ์ ์ดํด
- ๊ฐ ๋ฐฐํฌ๋ง๋ค ๋ช ๊ฐ์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋๋์ง
- ๋จผ์ ์์ํ ์์ ์ด ๋จผ์ ๋ฐฐํฌ๋๋ฏ๋ก FIFO, queue๋ก ๊ตฌํ (push, shift)
- ๋ชจ๋ ์์ ์ผ์ queue์ push
2. ๋ชจ๋ ์์ ์ผ์ ๊ณ์ฐํ ํ ๋ก์ง
- ์ ์ฒด์์ ์ผ = queue.shift(), cnt++
- ๊ทธ ๋ค์ ์์ ์ผ์ด ์ ์ฒด์์ ์ผ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, queue.shift(), cnt++
- ๊ทธ ๋ค์ ์์ ์ผ์ด ์ ์ฒด์์ ์ผ๋ณด๋ค ํด ๊ฒฝ์ฐ, res ๋ฐฐ์ด์ push, ์ฒ์๋ถํฐ ๋ฐ๋ณต
- queue๊ฐ ๋น์์ ๊ฒฝ์ฐ return res;
3. ์์ ์ผ ๊ณ์ฐํ๋ ๋ก์ง
- for(let i=0; i<speeds.length; i++)
- Math.ceil() ๋ฐ์ฌ๋ฆผ ํ์
- Math.ceil((100 - progresses[i]) / speed[i])
let tasks = [];
for(let i=0; i<speeds.length; i++) {
tasks.push(Math.ceil((100 - progresses[i]) / speed[i]));
}
4. ์์ ์ผ์ ๋ฌด์กฐ๊ฑด ๋ฐฐ์ด์ ์์๋ ํ์๊ฐ ์์๊น?!
- ์์ ์ผ์ queue์ ์ถ๊ฐ
- ๊ทธ ๋ค์ ์์ ์ผ์ด queue[0]๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, queue.push()
- ๊ทธ ๋ค์ ์์ ์ผ์ด queue[0]๋ณด๋ค ํด ๊ฒฝ์ฐ, queue.size()๋งํผ res.push(), queue ์ด๊ธฐํ
- ์ฒ์๋ถํฐ ๋ฐ๋ณต
let result = [];
let queue = [];
for(let i=0; i<speeds.length; i++) {
let task = Math.ceil((100 - progresses[i]) / speed[i]);
if (!queue.size) {
queue.push(task);
}
else if (task <= queue[0]) {
queue.push(task);
}
else if (task > queue[0]) {
result.push(queue.size);
queue = [];
}
}
โ๏ธ์์ค์ฝ๋
2021-07-09
function solution(progresses, speeds) {
let result = [];
let queue = [];
for (let i = 0; i < speeds.length; i++) {
let task = Math.ceil((100 - progresses[i]) / speeds[i]);
queue.push(task);
if (task > queue[0]) {
result.push(queue.length-1);
queue = [task];
}
}
result.push(queue.length)
return result;
}
โ๏ธ๋ช ๋ต
queue์์ด ํ๊ธฐ
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for(let i = 0, j = 0; i< days.length; i++){
if(days[i] <= maxDay) {
answer[j] += 1;
} else {
maxDay = days[i];
answer[++j] = 1;
}
}
return answer;
}