BOJ
백준 1026번: 보물
혀내
2022. 1. 31. 22:59
반응형
풀이
S의 값을 가장 작게 만들기 위해서 A에서 가장 큰 숫자를, B에서 가장 작은 숫자와 곱해주면 된다. 문제에는 B를 재배열하면 안된다고 적혀있지만 우리는 S의 최솟값만 출력하면 되기 때문에.. 😋 입력받은 A와 B를 오름차순으로 정렬해주자. 그 다음, 차례대로 A[0]을 B[N-1]과, A[1]을 B[N-2]와 곱해서 더해주면 된다.
코드
#include <iostream>
#include <algorithm>
#define MAX 50
using namespace std;
void init() {
cin.tie(0); cout.tie(0);
ios_base::sync_with_stdio(0);
}
int N;
int A[MAX];
int B[MAX];
int S = 0;
int main() {
cin >> N;
for (int i = 0; i < N; i++) cin >> A[i];
for (int i = 0; i < N; i++) cin >> B[i];
sort(A, A + N);
sort(B, B + N);
for (int i = 0; i < N; i++)
S += A[i] * B[N - 1 - i];
cout << S;
return 0;
}
반응형