문제
첫 번째 인수로 정수 배열 arr을, 두 번째 및 첫 번째 인수로 단일 정수 target을 취하는 JavaScript 함수를 작성해야 합니다. 우리 함수는 합이 k의 배수, 즉 합이 n*k가 되는 크기가 최소 2인 연속 하위 배열이 있는지 확인해야 합니다. 여기서 n은 임의의 정수일 수 있습니다.
존재하는 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr = [23, 2, 6, 4, 7]; const target = 6;
그러면 출력은 다음과 같아야 합니다. -
const output = true;
출력 설명:
[23, 2, 6, 4, 7]은 크기가 5이고 합이 최대 42인 연속 하위 배열이기 때문입니다.
예시
이에 대한 코드는 -
const arr = [23, 2, 6, 4, 7]; const target = 6; const checkSubarraySum = (arr = [], target = 1) => { let sum = 0 const hash = {} hash[0] = -1; for (let i = 0; i<arr.length; i++) { sum += arr[i] if (target!=0) sum %= target if ( hash[sum] !== undefined ) { if(i-hash[sum]>1) return true } else { hash[sum] = i } }; return false; }; console.log(checkSubarraySum(arr, target));
출력
콘솔의 출력은 -
true