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