문제
첫 번째 인수로 숫자 배열 arr을, 두 번째 인수로 숫자 target을 취하는 JavaScript 함수를 작성해야 합니다.
우리 함수는 하위 배열에 있는 모든 요소의 곱이 목표보다 작은 (인접한) 하위 배열의 수를 계산하고 반환해야 합니다.
예를 들어 함수에 대한 입력이
인 경우입력
const arr = [10, 5, 2, 6]; const target = 100;
출력
const output = 8;
출력 설명
곱이 100보다 작은 8개의 하위 배열은 -
[10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].
[10, 5, 2]는 100의 곱이 엄격하게 k보다 작지 않으므로 포함되지 않습니다.
예시
다음은 코드입니다 -
const arr = [10, 5, 2, 6];
const target = 100;
const countSubarrays = (arr = [], target = 1) => {
let product = 1
let left = 0
let count = 0
for (let right = 0; right < arr.length; right++) {
product *= arr[right]
while (left <= right && product >= target) {
product /= arr[left]
left += 1
}
count += right - left + 1
}
return count
};
console.log(countSubarrays(arr, target)); 출력
8