문제
풀이 코드
function solution(A,B){
let a = A.sort((a,b) => a - b);
let b = B.sort((a,b) => a - b).reverse();
let sum = 0;
for (let i = 0; i < a.length; i++) {
sum = sum + (a[i] * b[i]);
}
return sum;
}
풀이 과정
우선, A 배열과 B 배열을 모두 정렬하되,
A배열은 오름차순, B 배열은 내림차순으로 정렬 하였다,
이렇게 한 이유는 문제에서 각 요소의 곱을 모두 더하여 최솟값을 만드는 문제였다,
따라서 하나의 배열내의 최대값과, 또 다른 배열내의 최소값을 곱해 모두 더하면 그게 최소값이 될것이다.
이렇게 정렬한 후, for 루프를 통해 각 요소의 곱을 sum 변수에 누적 합산 하였다.
다른사람의 풀이
function solution(A,B){
A.sort((a, b) => a - b)
B.sort((a, b) => b - a)
return A.reduce((total, val, idx) => total + val * B[idx], 0)
}
풀이 방법이 비슷하지만 reduce 라는 내장함수를 사용하셨다