Problem
- Find the minimum sum which is obtained from summing each two integers product.
- 각 두 정수의 곱을 합해서 얻은 최소 합계를 반환한다.
- Array will contain positive only and has even size.
- 배열은 양수만 포함하고, 항상 짝수 크기이다.
For example:
minSumEachTwoIntProduct([5, 4, 2, 3]); // 22 (5 * 2 + 3 * 4)
Solution 01
function minSumEachTwoIntProduct(arr) {
let sortArr = arr.sort((a, b) => a - b);
let sum = 0;
while (sortArr.length) {
sum += sortArr.pop() * sortArr.shift();
}
return sum;
}
minSumEachTwoIntProduct([5, 4, 2, 3]); // 22 (5 * 2 + 4 * 3)
minSumEachTwoIntProduct([2, 4, 1, 3]); // 10 (4 * 1 + 3 * 2)
sort()
: 배열의 element를 정렬한 후, 그 배열을 반환한다.
pop()
: 배열의 마지막 element를 제거하고, 그 element를 반환한다.
shift()
: 배열의 첫 번째 element를 제거하고, 그 element를 반환한다.
Solution 02
function minSumEachTwoIntProduct(arr) {
let sortArr = arr.sort((a, b) => a - b);
let sum = 0;
for (let i = 0, j = arr.length - 1; i < arr.length / 2; i++, j--) {
sum += sortArr[i] * sortArr[j];
}
return sum;
}
minSumEachTwoIntProduct([5, 4, 2, 3]); // 22 (5 * 2 + 4 * 3)
minSumEachTwoIntProduct([2, 4, 1, 3]); // 10 (4 * 1 + 3 * 2)