연속 부분수열 1
문제#
N개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요. 만약 N=8, M=6이고 수열이 다음과 같다면 12131112 합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다.
로직#
function solution(m, arr){ var answer=0, lt=0, sum=0; for(var rt=0; rt<arr.length; rt++){ sum+=arr[rt]; if(sum===m) answer++; while(sum>=m){ sum-=arr[lt++]; if(sum===m) answer++; } } return answer;}
solution(6, [1, 2, 1, 3, 1, 1, 1, 2])