문제
첫 번째 인수로 숫자 배열 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