https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
S의 값을 가장 작게 만들기 위해서는 B의 i번째로 큰 값과 A의 i번째로 작은 값을 곱해주면 됩니다.
아래는 전체 코드입니다.
#include <bits/stdc++.h>
using namespace std;
int a[51], b[51];
bool cmp(int x, int y){return x > y;}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n;
for(int i = 0; i < n; i++) cin >> a[i]; // a 입력 받음
for(int i = 0; i < n; i++) cin >> b[i]; // b 입력 받음
sort(a, a + n, cmp); sort(b, b + n); // 배열 a, b 정렬 (a는 내림차순, b는 오름차순)
int ans = 0;
for(int i = 0; i < n; i++)
ans += a[i] * b[i]; // B의 i번째로 큰 값과 A의 i번째로 작은 값을 곱해줌
cout << ans << "\n";
}
'Algorithm > Greedy' 카테고리의 다른 글
[백준 11501번] 주식 (C++) (0) | 2022.05.10 |
---|---|
[백준 2457번] 공주님의 정원 (C++) (0) | 2022.05.10 |
[백준 2217번] 로프 (C++) (0) | 2022.05.09 |
[백준 11047번] 동전 0 (C++) (0) | 2022.04.07 |
[백준 1931번] 회의실 배정 (C++) (0) | 2022.04.03 |