📍 문제

 

📍 풀이

길이가 같은 2개의 배열에서 각 원소들을 하나씩 매칭시켜 곱해 더했을 때 누적값이 최솟값을 구하려면,쉽게 말해, 두 수를 곱해 최소가 되려면  최대값 * 최소값  을 하면 된다.

 

따라서A 배열오름차순 정렬을 하고B 배열내림차순 정렬을 해서

 

for문을 돌며 각 배열의 같은 index 원소를 곱해 answer에 누적해 주면 된다.

 

 

📍 코드

#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.begin(), B.end());
    reverse(B.begin(), B.end());

    for (int i{ 0 }; i < A.size(); i++) {
        answer += A[i] * B[i];
    }

    return answer;
}

+ Recent posts