[C++] 백준 1026 보물

semin·2023년 11월 2일
0

https://www.acmicpc.net/problem/1026
제목 : 보물
난이도 : Silver IV

풀이

두 배열 A, B의 원소를 하나씩 짝지어 곱 한 수의 합이 최소가 되어야 한다.
그러기 위해선 한 배열에서 제일 작은 수와 다른 배열에서 제일 큰 수를 곱해야 한다.
한쪽 배열은 오름차순으로 정렬하고, 다른쪽 배열은 내림차순으로 정렬해서 각각을 곱하여 더한 수가 최소값이다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int N, num, sum = 0;
    cin >> N;
    vector<int> A(N, 0), B(N, 0);
    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }
    for (int i = 0; i < N; i++) {
        cin >> B[i];
    }
    sort(A.begin(), A.end());
    sort(B.rbegin(), B.rend());

    for (int i = 0; i < N; i++) {
        sum += A[i] * B[i];
    }
    cout << sum;
}

profile
게임 프로그래밍 공부

0개의 댓글

관련 채용 정보