300x250
1. 제목
- 백준 1026 보물
- BOJ 1026 보물
문제 링크 : 1026번: 보물 (acmicpc.net)
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
2. 풀이 과정
배열 A와 배열 B를 곱해서 최소의 수를 만들기 위해선 가장 높은 수 와 가장 낮은 수를 곱하면 됩니다.
1. 배열 A는 오름차순 정렬, 배열 B는 내림차순 정렬
2. 각 정렬된 배열 A와 배열 B를 곱한 후 더해줍니다.
3. 코드
// 배열 A와 배열 B를 곱해서 최소의 수를 만들기 위해선 가장 높은 수 와 가장 낮은 수를 곱하면 됩니다.
// 1. 배열 A는 오름차순 정렬, 배열 B는 내림차순 정렬
// 2. 각 정렬된 배열 A와 배열 B를 곱한 후 더해줍니다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 내림차순
bool Compare(int num1, int num2)
{
if (num1 > num2)
return true;
return false;
}
int main()
{
int N;
cin >> N;
vector<int> A(N), B(N);
for (int index = 0; index < N; index++)
cin >> A[index];
for (int index = 0; index < N; index++)
cin >> B[index];
// 1. 배열 A는 오름차순 정렬, 배열 B는 내림차순 정렬
sort(A.begin(), A.end());
sort(B.begin(), B.end(), Compare);
int result = 0;
// 2. 각 정렬된 배열 A와 배열 B를 곱한 후 더해줍니다.
for (int index = 0; index < N; index++)
result += A[index] * B[index];
cout << result << endl;
return 0;
}
300x250
'<C++ 백준 BOJ> > 그리디' 카테고리의 다른 글
[백준 BOJ13305] 주유소 (C++) (0) | 2023.07.02 |
---|---|
[백준 BOJ1789] 수들의 합 (C++) (0) | 2023.07.02 |
[백준 BOJ2217] 로프 (C++) (0) | 2023.07.02 |
[백준 BOJ1931] 회의실 배정 (C++) (0) | 2022.10.10 |
[백준 BOJ11399] ATM (C++) (0) | 2022.10.10 |