Q. 배열의 연속된 요소들로 이루어진 합 중에서 주어진 수의 이상의 값을 가지는 배열 중 가장 작은 길이를
구하시오
const minSubArrayLen = (arr, n) => {
let sum = 0;
let len = Infinity;
let p1 = 0;
let p2 = 0;
while(p1 < arr.length) {
// sum이 n보다 작고, p2가 배열의 끝에 다다르기 전이라면
if(sum < n && p2 < arr.length) {
// sum에 arr[p2]를 더해주고 p2에 1을 더해줌
sum += arr[p2++];
}
// sum이 n이상이라면,
else if(sum >= n) {
// 기존의 len과 현재의 len중에 최솟값 구하기
len = Math.min(len, p2-p1);
// sum에서 arr[p1]의 값을 빼주고, p1에 1을 더해줌
sum -= arr[p1++];
}
// p2가 arr의 끝에 다다랐다면 값을 구할 수 없으므로 break
else break;
}
return len === Infinity ? 0 : len;
};