[JS] νλ‘κ·Έλλ¨Έμ€ - κΈ°λ₯ κ°λ°
π λ¬Έμ
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€. κ° κΈ°λ₯μ μ§λκ° 100%μΌ λ μλΉμ€μ λ°μν μ μμ΅λλ€.
λ, κ° κΈ°λ₯μ κ°λ°μλλ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ λ€μ μλ κΈ°λ₯μ΄ μμ μλ κΈ°λ₯λ³΄λ€ λ¨Όμ κ°λ°λ μ μκ³ , μ΄λ λ€μ μλ κΈ°λ₯μ μμ μλ κΈ°λ₯μ΄ λ°°ν¬λ λ ν¨κ» λ°°ν¬λ©λλ€.
λ¨Όμ λ°°ν¬λμ΄μΌ νλ μμλλ‘ μμ μ μ§λκ° μ ν μ μ λ°°μ΄ progressesμ κ° μμ μ κ°λ° μλκ° μ ν μ μ λ°°μ΄ speedsκ° μ£Όμ΄μ§ λ κ° λ°°ν¬λ§λ€ λͺ κ°μ κΈ°λ₯μ΄ λ°°ν¬λλμ§λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ ν μ¬ν
- μμ μ κ°μ(progresses, speedsλ°°μ΄μ κΈΈμ΄)λ 100κ° μ΄νμ λλ€.
- μμ μ§λλ 100 λ―Έλ§μ μμ°μμ λλ€.
- μμ μλλ 100 μ΄νμ μμ°μμ λλ€.
- λ°°ν¬λ ν루μ ν λ²λ§ ν μ μμΌλ©°, ν루μ λμ μ΄λ£¨μ΄μ§λ€κ³ κ°μ ν©λλ€. μλ₯Ό λ€μ΄ μ§λμ¨μ΄ 95%μΈ μμ μ κ°λ° μλκ° ν루μ 4%λΌλ©΄ λ°°ν¬λ 2μΌ λ€μ μ΄λ£¨μ΄μ§λλ€.
π‘ μμ΄λμ΄
100%μμ νμ¬ μ§ν %λ₯Ό λΉΌκ³ , ν루μ ν μ μλ μμ λμΌλ‘ λλ μ κ° taskλ§λ€ μλ£λκΈ°κΉμ§ λ¨μ μΌμλ₯Ό ꡬνλ€.
μ μμ μΌμ΄ λλμ§ μμΌλ©΄ λ· μμ μΌμ΄ μλ£λμ΄λ λ°°ν¬ν μ μκΈ° λλ¬Έμ μΌλ¨ 맨 μ²μ taskμ λ¨μ λ μ μ€νμ λ£λλ€.
κ·Έλ¦¬κ³ 2λ²μ§Έ μμλΆν° λλ©΄μ, 맨 μ²μ μΌλ³΄λ€ μ κ² λ¨μμΌλ©΄ μ€νμ λ£κ³ , λ§μ½ 맨 μ²μ μΌλ³΄λ€ λ§μ΄ λ¨μ μΌμ λ§λλ©΄ μΌλ¨ μ€νμ λ€ λΉμ°κ³ , λΉμ΄ μ€νμ κΈΈμ΄λ§νΌ answerμ pushν΄μ€λ€. κ·Έλ¦¬κ³ λ€μ 맨 μ²μ μΌλ³΄λ€ λ§μ΄ λ¨μ μΌμ μ€νμ pushνλ€.
μ΄ κ³Όμ μ λ€ κ±°μ³€μ λ μ€νμ΄ λΉμ΄μμ§ μλ€λ©΄, μ€νμ λ¨μ μΌλ€μ νλ²μ λ°°ν¬ν μ μμΌλ―λ‘ λ€ λΉΌμ£Όκ³ κ·Έ κΈΈμ΄λ§νΌ answerμ pushνλ€.
βοΈ νμ΄
function solution(progresses, speeds) {
var answer = [];
let leftDay = [];
let stk = [];
for(let i=0; i<progresses.length; i++){
leftDay.push(Math.ceil((100-progresses[i]) / speeds[i]));
}
stk.push(leftDay[0]);
for(let i=1; i<leftDay.length; i++){
if(leftDay[i] <= stk[0] || stk.length === 0) {
stk.push(leftDay[i]);
}
else if(leftDay[i] > stk[0]) {
let complete = stk.length;
stk.splice(0, complete);
answer.push(complete)
stk.push(leftDay[i]);
}
}
if(stk.length > 0) answer.push(stk.length);
return answer;
}