문제 설명
최솟값 만들기
해결 방법
곱한 값이 최소가 되기 위해서는, 큰 숫자일수록 작은 숫자와 곱해야 상대적으로 더 작은값이 나온다. A 배열은 오름차순 정렬 B 배열은 내림차순으로 정렬한 후 곱하고 더한다.rbegin(), rend()
를 사용해서 정렬하는 방법도 있다.
💻소스코드
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B)
{
int answer = 0;
sort(A.begin(), A.end()); // A는 오름차순 정렬
sort(B.begin(), B.end(), greater<int>()); // B는 내림차순 정렬
for (int i = 0; i < A.size(); i++) {
answer += A[i] * B[i];
}
return answer;
}