Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 가능한 최대 제품 합계

<시간/>

양의 숫자로 구성된 두 개의 배열(arr1 및 arr2)이 제공됩니다. 두 배열의 값 수는 동일합니다.

요소의 곱의 최대 합을 찾는 함수를 작성해야 합니다.

arr1의 각 요소는 arr2의 정확히 하나의 요소와 곱해야 하고 그 반대의 경우도 마찬가지이므로 두 배열의 각 요소가 정확히 한 번 나타나고 생성된 제품의 합이 최대가 되도록 해야 합니다.

예:만약,

arr1 = [5,1,3,4,2] and,
arr2 = [8,10,9,7,6]

그러면 가능한 곱의 합은 -

5*6 + 1*7 + 3*9 + 4*10 + 2*8

그러나 가장 큰 금액은 아닐 수 있습니다.

예시

다음은 코드입니다 -

const arr1 = [5,1,3,4,2];
const arr2 = [8,10,9,7,6];
const sorter = (a, b) => b - a;
const greatestProduct = (a1, a2) => {
   if(a1.length !== a2.length){
      return false;
   };
   const a1Sorted = a1.slice().sort(sorter);
   const a2Sorted = a2.slice().sort(sorter);
   let res = 0;
   for(let i = 0; i < a1.length; i++){
      res += (a1Sorted[i] * a2Sorted[i]);
   };
   return res;
};
console.log(greatestProduct(arr1, arr2));

출력

다음은 콘솔의 출력입니다 -

130