N개의 수로 이루어진 수열이 주어집니다.
이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을
작성하세요.
만약 N=8, M=6이고 수열이 다음과 같다면
1 2 1 3 1 1 1 2
합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다.
M | array | Output |
---|---|---|
6 | [1,2,1,3,1,1,1,2] | 3 |
m
보다 작으면 계속 더해나간다.m
보다 커지면 합을 초기화하고 두 번째 루프를 빠져나간다.m
과 같으면 count
를 1 늘린다.const solution =(m, sequence) => {
let count = 0;
for(let i = 0; i < sequence.length; i++) {
let temp = sequence[i];
for(let j = i+1; j < sequence.length; j++) {
if(temp + sequence[j] < m) {
temp += sequence[j];
}
else if (temp + sequence[j] > m) {
temp = 0;
break;
}
else {
temp = 0;
count++;
break;
}
}
}
return count;
}