본문 바로가기
대딩/프로그래머스풀이

[프로그래머스 lv2] 최솟값 만들기 풀이

by 경아ㅏ 2022. 8. 16.

 프로그래머스의 모든 문제와 해설 보기[클릭]

 

해설

곲의 합이 최소이려면, 가장 큰수는 가장 작은 수와 곱해져야 한다.

A는 오름차순, B는 내림차순으로 정렬한 뒤 일치하는 인덱스의 수끼리 곱하여 더하면 정답이다.

 

 

코드

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <tuple>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <cctype>
#include <iostream>

using namespace std;
using ii = pair<int, int>;
using iii = tuple<int, int, int>;

#define X first
#define Y second

int solution(vector<int> A, vector<int> B) {

    sort(A.begin(), A.end());
    sort(B.begin(), B.end(), greater<>());
    
    int ret = 0;
    for (int i=0; i<A.size(); i++)
        ret += A[i]*B[i];
    return ret;
}

 

 

댓글