양의 정수 배열을 첫 번째 인수로, 양의 정수를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.
함수는 합을 두 번째 인수로 지정된 숫자로 나눌 수 있도록 원래 배열에서 삭제해야 하는 가장 작은 하위 배열의 길이를 파악하고 반환해야 합니다.
예를 들어 -
입력이 -
인 경우const arr = [3, 8, 2, 6]; const num = 9;
그러면 출력은 다음과 같아야 합니다. -
const output = 2
삭제해야 하는 부분배열은 [8, 2]
이기 때문에예시
다음은 코드입니다 -
const arr = [3, 8, 2, 6]; const num = 9; const minimumDeletion = (arr = [], num) => { const diff = arr.reduce((a, b) => a + b) % num; let res = diff == 0 ? 0 : arr.length; for (let i = 0, sum = 0, map = {0: -1}; i < arr.length; i++) { sum += arr[i]; const target = (sum % num - diff + num) % num; if (map[target] != undefined) { res = Math.min(res, i - map[target]); }; map[sum % num] = i; }; return res == arr.length ? -1 : res; }; console.log(minimumDeletion(arr, num));
출력
다음은 콘솔 출력입니다 -
2