문제
N개의 수로 이루어진 수열이 주어진다.
이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 출력
풀이 과정 a
const solutionA = (numberArray, M) => {
let count = 0;
let pointer1 = 0;
let pointer2 = 1;
let sum = numberArray[pointer1];
while (pointer2 < numberArray.length) {
if (sum < M) sum += numberArray[pointer2++];
else if (sum > M) sum -= numberArray[pointer1++];
else {
count++;
sum -= numberArray[pointer1++];
sum += numberArray[pointer2++];
}
}
return count;
};
const testA = solutionA([1, 2, 1, 3, 1, 1, 1, 2], 6);
console.log(testA);
풀이 과정 b
const solutionB = (numberArray, M) => {
let sum = 0;
let count = 0;
let pointer1 = 0;
for (let pointer2 = 0; pointer2 < numberArray.length; pointer2++) {
sum += numberArray[pointer2];
if (sum === M) count++;
while (sum >= M) {
sum -= numberArray[pointer1++];
if (sum === M) count++;
}
}
return count;
};
const testB = solutionB([1, 2, 1, 3, 1, 1, 1, 2], 6);
console.log(testB);
틀린 부분이 있거나 보충해야 할 내용이 있다면 댓글이나 DM(sungstonemin)으로 알려주시면 감사하겠습니다😄