백준 문제풀이

1026번: 보물

하다블 2022. 4. 1. 18:45
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

 

문제에선 B 배열을 수정해서는 안 된다고 적혀있습니다.

하지만 A 배열만 움직이나 둘 다 움직이나 큰 차이 없을 뿐더러 B를 수정했는지 판단할 수 있는 방법이 없으므로 다음과 같이 풀 수 있습니다.

 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    vector<int>n1;
    vector<int>n2;
    cin>>n;
    for(int i{0};i<n;i++)
    {
        int temp;
        cin>>temp;
        n1.push_back(temp);
    }
    for(int i{0};i<n;i++)
    {
        int temp;
        cin>>temp;
        n2.push_back(temp);
    }
    sort(n1.begin(),n1.end());
    sort(n2.rbegin(),n2.rend());
    int sum{0};
    for(int i{0};i<n;i++)
    {
        sum+=n1[i]*n2[i];
    }
    cout<<sum<<endl;
    return 0;
}

A배열과 B배열을 오름차순과 내림차순으로 정렬하게 되면 한 배열에서 가장 큰 값이 다른 배열에서 가장 작은 값과 곱해져 최솟값을 도출할 수 있습니다.

반응형