보물
문제링크: https://www.acmicpc.net/problem/1026
그냥 배열 A의 요소와 배열 B의 요소 곱의 합을 구하는 문제다.
최솟값을 구하려고 하기에 A의 가장 작은값과 B의 가장 큰 값을 곱해주고 더해주면 끝.
정답코드
#include<iostream>
#include<algorithm>
using namespace std;
bool upcompare(int a, int b) {
return a < b;
}
bool downcompare(int a, int b) {
return a > b;
}
int main() {
int n;
cin >> n;
int* a = new int[n];
int* b = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
cin >> b[i];
int sum = 0;
sort(a, a + n, upcompare);
sort(b, b + n, downcompare);
for (int i = 0; i < n; i++)
sum += b[i] * a[i];
cout << sum << endl;
return 0;
}
배열 B의 순서를 바꾸면 안된다 하면 b를 복사한 배열 temp를 만들어 그 배열을 정렬하고 a와 곱해준다.
'ProblemSolving' 카테고리의 다른 글
[BOJ] 1024_수열의 합 (0) | 2021.01.22 |
---|---|
[BOJ] 1003_피보나치 함수 (0) | 2021.01.21 |
[BOJ] 1021_회전하는 큐 (0) | 2021.01.19 |
[BOJ] 1015_수열정렬 (0) | 2021.01.18 |
[BOJ] 1002_터렛 (0) | 2021.01.17 |
최근댓글