자료구조 & 알고리즘/프로그래머스

Level 2. 최솟값 만들기

diesuki4 2023. 4. 4. 06:07
Level 2. 최솟값 만들기

 

 

A 배열의 작은 수부터, B 배열의 큰 수부터 차례로 곱해 더하면 된다.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

int solution(vector<int> A, vector<int> B)
{
    sort(A.begin(), A.end());
    sort(B.rbegin(), B.rend());
    
    transform(A.begin(), A.end(), B.begin(), A.begin(), ::multiplies<int>());

    return accumulate(A.begin(), A.end(), 0);
}

 

없을 줄 알았는데 내적을 계산해주는 inner_product() 함수가 STL에 있었다.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

int solution(vector<int> A, vector<int> B)
{
    sort(A.begin(), A.end());
    sort(B.rbegin(), B.rend());
    
    return inner_product(A.begin(), A.end(), B.begin(), 0);
}