보물
문제링크: https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
그냥 배열 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 |
최근댓글