Sliding Window β
μ¬λΌμ΄λ© μλμ°(sliding window) μκ³ λ¦¬μ¦μ λ°°μ΄μ μ΄μ©ν λ¬Έμ μμ μμ£Ό μ¬μ©λλ€.
μ 체 λ°°μ΄μμ νΉμ μ°μλ λ²μλ₯Ό κ³μ°ν λ μ μ©νκ² μ¬μ©λλ©° μ¬μ©λ°©λ²μ μλμ κ°λ€.
λΆλͺ¨ λ°°μ΄μ μλΈ λ°°μ΄μ λ§λ€μ΄μ 쑰건μ λ§κ² μλΈ λ°°μ΄μ μμͺ½μ λλ Έλ€ μ€μλ€νλ λ°©λ²μΌλ‘ μ΄λ° λ°©λ²μ ν΅ν΄ λΆλͺ¨ λ°°μ΄μ μ 체λ₯Ό μλΈ λ°°μ΄μ΄ μ΄λνλ©΄μ 쑰건μ λ§λ μνκ° μλμ§ νμΈνλ€.
μ½λ β
μλ μ½λλ νΉμ μμ°μ(N)μ΄ λ£μΌλ©΄ 1λΆν° NκΉμ§μ μμ°μλ€ μ€μμ μ°μλλ ν©μ΄ Nμ΄ λλ κ°μλ₯Ό μ°Ύλ μ½λμ΄λ€.
js
const slidingwindow = (n) => {
const slidingWindow = Array(n).fill().map((_,idx) => idx+1)
let [start, end, cnt] = [0,1,0]
while (start < end && end <= n) {
const sum = slidingWindow.slice(start,end).reduce((acc,cur) => acc + cur)
sum === n && cnt++;
sum >= n && start++;
sum < n && end++;
}
return cnt;
}
console.log(slidingwindow(15)); // 4