반응형
문제 링크: https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
<문제 풀이> 그리디
S의 최솟값을 구하는 방법은 배열의 각 원소를 하나씩 꺼낼 때 가장 작은 수와 가장 큰 수를 꺼내서 곱하면 됩니다.
-> A 오름차순 정렬, B 내림차순 정렬
-> 문제에서 B를 재배치할 수 없다고 했지만 A를 재배치해서 B에 매핑시키는 것이므로 B를 정렬해도 상관없다.
<C++ 소스 코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include<iostream>
#include<algorithm>
using namespace std;
int N;
int A[100], B[100];
bool cmp(int& a, int& b) {
return a > b;
}
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
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, cmp);
int res = 0;
for (int i = 0; i < N; i++) res += A[i] * B[i];
cout << res;
return 0;
}
|
cs |
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 17141번] 연구소 2 (0) | 2022.08.04 |
---|---|
[백준 17144번] 미세먼지 안녕! (0) | 2022.08.03 |
[백준 1932번] 정수 삼각형 (0) | 2022.05.06 |
[백준 19237번] 어른 상어 (0) | 2022.04.04 |
[백준 19236번] 청소년 상어 (0) | 2022.04.03 |