# BaekJoon 최솟값 만들기
# 풀이 방법 및 배워야할 것:
모든 경우의 수를 푸는 문제가 아니라 두 벡터의 내적을 구하는 문제이다.
반복문으로 내적을 구현할 수도 있고 C++에서는
- 푼 날짜 2024-06-17
# 풀이 코드 :
# C++
- 반복문을 통한 구현
#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.begin(), B.end(), greater<int>());
for (int i = 0 ; i<A.size();i++){
answer += A[i]*B[i];
}
return answer;
}
- inner_product 함수를 통한 구현
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int solution(vector<int> A, vector<int> B)
{
int answer = 0;
sort(A.begin(), A.end());
sort(B.begin(), B.end(), greater<int>());
return inner_product(A.begin(),A.end(),B.begin(),0);
}
# Python
- 반복문을 통한 구현
def solution(A,B):
result = 0
A.sort()
B.sort(reverse = True)
for i, j in zip (A, B) :
result += i * j
return result
- numpy dot 함수를 통한 구현
import numpy as np
def solution(A,B):
A = np.array(A)
B = np.array(B)
return int(np.dot(np.sort(A), np.sort(B)[::-1]))