백준 문제풀이
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배열을 오름차순과 내림차순으로 정렬하게 되면 한 배열에서 가장 큰 값이 다른 배열에서 가장 작은 값과 곱해져 최솟값을 도출할 수 있습니다.
반응형