해설
곲의 합이 최소이려면, 가장 큰수는 가장 작은 수와 곱해져야 한다.
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;
}
'대딩 > 프로그래머스풀이' 카테고리의 다른 글
[프로그래머스 lv2] 게임 맵 최단거리 풀이 (0) | 2022.08.17 |
---|---|
[프로그래머스 lv2] 타겟 넘버 풀이 (0) | 2022.08.17 |
[프로그래머스 lv2] 줄서는 방법 풀이 (0) | 2022.08.16 |
[프로그래머스 lv2] 올바른 괄호 풀이 (0) | 2022.08.16 |
[프로그래머스 lv2] 땅따먹기 풀이 (0) | 2022.08.16 |
댓글