BOJ 1026 : 보물 - C++

김정욱·2021년 2월 18일
0

Algorithm - 문제

목록 보기
109/249

보물

코드

#include <string>
#include <vector>
#include <iostream>
#include <cmath>
#include <map>
#include <algorithm>
using namespace std;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int N;
    cin >> N;
    vector<int> A(N);
    vector<int> B(N);

    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.begin(), B.end());
    int ans=0;
    for(int i=0;i<N;i++)
    {
        ans+=B[i]*A[(N-1)-i];
    }
    cout << ans;
    return 0;
}
  • 원리
    : 어차피 각 A의 최소값xB의 최대값을 해주면 곱이 최소가 되니 둘다 정렬해서 곱하자
  • 로직
    1) A,B배열 모두 정렬
    2) A[i] * B[(N-1)-i]로 최대와 최소를 곱한다
profile
Developer & PhotoGrapher

0개의 댓글