https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net

풀이
A, B 두 배열을 곱해서 구할 수 있는 최솟값은
B의 가장 큰 수에 A의 가장 작은 수를 곱하는 것이다.
B는 재배열하면 안 된다고 했지만 A의 순서를 마음대로 바꿀 수 있기 때문에 사실상 상관 없음
A, B 둘다 정렬해준 후 가장 큰 수*가장 작은 수 끼리 곱해주면 된다.
전체 코드
/*boj g4 1920 수 찾기*/
#include <algorithm>
#include <iostream>
#define MAXN 55
using namespace std;
int N;
int A[MAXN];
int B[MAXN];
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++)
cin >> A[i];
for (int j = 0; j < N; j++)
cin >> B[j];
sort(A, A + N, greater<>());
sort(B, B + N);
int sum = 0;
for (int i = 0; i < N; i++) {
sum += A[i] * B[i];
}
cout << sum << "\n";
}
'알고리즘' 카테고리의 다른 글
백준 s2 1541 잃어버린 괄호 c++ (0) | 2024.01.25 |
---|---|
백준 s4 11399 ATM c++ (0) | 2024.01.25 |
백준 s4 2217 로프 c++ (0) | 2024.01.25 |
백준 p5 19235 모노미노도미노 c++ (0) | 2024.01.24 |
백준 g2 20061 모노미노도미노 2 c++ (0) | 2024.01.23 |