풀이법
1) 그리디 접근법을 사용하면 쉽게 풀 수 있는 문제이다.
2) A배열은 오름차순으로 B배열은 내림차순으로 정렬 후 이를 곱한 값들은 더하면 답을 쉽게 구할 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
vector<int> a;
vector<int> b;
long long ans=0;
bool compare(int a, int b)
{
if (a <= b)
{
return false;
}
else
return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
a.push_back(num);
}
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
b.push_back(num);
}
sort(a.begin(), a.end());//오름차순
sort(b.begin(), b.end(), compare);
for (int i = 0; i < n; i++)
{
ans += a[i] * b[i];
}
cout << ans;
}
github.com/pearlcrum/CodingTest/tree/main
'Coding_Test_C++' 카테고리의 다른 글
BaekJoon 9095번: 1, 2, 3 더하기 (0) | 2021.04.11 |
---|---|
BaekJoon 12865번: 평범한 배낭 (0) | 2021.04.10 |
BaekJoon 2217번: 로프 (0) | 2021.04.09 |
BaekJoon 1074번: Z (0) | 2021.04.08 |
BaekJoon 2447번: 별 찍기 - 10 (0) | 2021.04.08 |