문제 설명
길이가 같은 두 개의 배열 A와 B가 있습니다. 각 배열은 자연수로 구성됩니다.
배열 A와 B에서 각각 하나의 숫자를 가져와서 두 숫자를 곱합니다. 이 과정은 배열의 길이만큼 반복되며, 두 숫자를 곱한 값이 누적되어 더해진다. 이 시점에서 목표는 최종 누적 값을 최소로 만드는 것입니다. (단, 각 어레이에서 k번째 숫자를 선택했다면 다음에 다시 k번째 숫자를 선택할 수 없습니다.)
예를 들어 A = (1, 4, 2) B = (5, 4, 4) 라면
- A의 첫 번째 숫자인 1과 B의 첫 번째 숫자인 5를 곱하고 더합니다. (누적값: 0 + 5(1×5) = 5)
- A의 두 번째 수인 4와 B의 세 번째 수인 4를 곱하고 더합니다. (누적값: 5 + 16(4×4) = 21)
- A의 세 번째 수인 2와 B의 두 번째 수인 4를 곱하고 더합니다. (누적값: 21 + 8(2×4) = 29)
즉, 이 경우가 가장 적기 때문에 29돌려 주다 .
배열 A와 B가 주어진 최소 누적 값을 반환하는 solve 함수를 완성합니다.
제한
- 배열 A 및 B의 크기: 1,000 이하의 정수
- 배열 A 및 B의 요소 크기: 1,000 이하의 정수
I/O 예시
| ㅏ | 비 | 답변 |
| (1, 4, 2) | (5, 4, 4) | 29 |
| (1,2) | (3.4) | 10 |
I/O 예시 설명
I/O 예제 #1
문제의 예와 같습니다.
I/O 예제 #2
A의 첫 번째 숫자인 1과 B의 두 번째 숫자인 4를 곱하고 더합니다. (누적값: 4) 다음으로 A의 두 번째 수인 2와 B의 첫 번째 수인 3을 곱하고 더한다. (누적값: 4 + 6 = 10)
이 경우는 최소이므로 10을 반환합니다.
// 배열 A,B가 주어질 때 최종적으로 누적된 최솟값을 return
function solution(A,B){
var answer = 0;
A = A.sort((a,b) => a - b);
B = B.sort((a,b) => b - a);
for(let i=0; i<A.length; i++) {
answer += A(i) * B(i)
}
return answer;
}