코딩테스트 준비하기 - 23일차

3717 단어 algorithmalgorithm

접근방법

sum <= m일때, rt가 증가할때마다 각 rt의 연속 수열의 개수는 (rt - lt +1)만큼 생긴다.

풀이코드

//4. 연속 부분수열2
            function solution(m, arr){
                let answer = sum = lt = 0;
                for(let rt = 0; rt < arr.length; rt++) {
                    sum += arr[rt];
                    while(sum > m) {
                        sum -= arr[lt++];
                    }
                    answer += (rt - lt + 1);
                    //m이하의 연속 수열 갯수
                }
                return answer;
            }
            
            let a=[1, 3, 1, 2, 3];
            console.log(solution(5, a));

좋은 웹페이지 즐겨찾기