두 배열의 원소 곱의 합이 최소가 되게 해야한다.
한 배열의 최솟값과, 다른 배열의 최댓값을 곱하는게 가장 작은 값을 만들 수 있는 방법이다.
따라서 한 배열은 오름차순, 다른 배열은 내림차순으로 정렬한다.
두 배열의 길이가 동일하다고 했으므로 A의 배열 길이만큼 반복문을 돌려서 두 배열의 각 원소를 곱한 값을 전부 더한 결과를 반환하면 된다.
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B)
{
int answer = 0;
sort(A.begin(), A.end());
sort(B.rbegin(), B.rend());
for(int i=0; i<A.size(); i++) {
answer += A[i]*B[i];
}
return answer;
}