.
두배열의 원소들을 각각 하나씩 곱한 값들을 합친 값이 가장 적은 경우를 찾는 문제이다.
나는 큰수 * 작은수 연산을 해야 가장 적은 값이 나오는 것을 이용해 한 배열은 오름차순으로 정렬, 나머지 한개는 내림차순으로 정렬한 뒤 서로 곱해줬다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include<vector> #include<algorithm> using namespace std; int solution(vector<int> A, vector<int> B) { int answer = 0; sort(A.begin(),A.end()); sort(B.begin(),B.end(),greater<int>()); for (int i = 0; i < A.size(); i++) { answer += A[i] * B[i]; } return answer; } | cs |