문제 링크입니다: https://www.acmicpc.net/problem/1026
A를 내림차순으로 정렬하고 B를 오름차순으로 정렬한 뒤 각 인덱스마다 곱한 결과가 최소값입니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N;
vector<int> A, B;
bool cmp(int num1, int num2)
{
return num1 > num2;
}
int minResult(void)
{
//A를 내림차순으로 정렬
sort(A.begin(), A.end(), cmp);
//B를 오름차순으로 정렬
sort(B.begin(), B.end());
int result = 0;
for (int i = 0; i < N; i++)
result += (A[i] * B[i]);
return result;
}
int main(void)
{
cin >> N;
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
A.push_back(temp);
}
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
B.push_back(temp);
}
cout << minResult() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 1328번 고층 빌딩 (0) | 2018.05.10 |
---|---|
백준 1016번 제곱 ㄴㄴ 수 (0) | 2018.05.09 |
백준 1075번 나누기 (0) | 2018.05.09 |
백준 1967번 트리의 지름 (3) | 2018.05.09 |
백준 1057번 토너먼트 (2) | 2018.05.07 |