連続部分数列2


私の答え(正解x)めちゃくちゃ
function solution(m, arr) {
    let answer = 0, lt = 0, sum = 0;
    for(let rt = 0; rt < arr.length; rt++) {
        sum += arr[rt];
        if(sum <= 5) { 
            answer++;
        }
        while(sum > 5) {
            sum -= arr[lt++];
            if(sum <= 5) answer++;
        }
        if(rt === arr.length-1) { // rt의 마지막 수에서 lt를 하나씩 뺐을 때 5이하면 증가하려고 했는데..
            while(lt !== arr.length-1){ 
                sum -= arr[lt++];
                if(sum <= 5) answer++;
            }
        }
    }
    return answer;
}
let arr = [1,3,1,2,3];
console.log(solution(5, arr));
正解
function solution(m, arr) {
    let answer = 0, lt = 0, sum = 0;
    for(let rt = 0; rt < arr.length; rt++) {
        sum += arr[rt];
        while(sum > m) {
            sum -= arr[lt++];
        }
        answer += (rt-lt+1);
        // 1과 3이 누적된 4가 있다면 4는 1,3의 합인걸 이용한 식
    }
    return answer;
}
let arr = [1,3,1,2,3];
console.log(solution(5, arr));