2017. 12. 15. 22:36
자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.
예를 들어 A = [1, 2]
, B = [3, 4]
라면
- A에서 1, B에서 4를 뽑아 곱하여 더합니다.
- A에서 2, B에서 3을 뽑아 곱하여 더합니다.
수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다.
수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<vector> | |
#include<algorithm> | |
using namespace std; | |
int getMinSum(vector<int> A, vector<int> B) | |
{ | |
int answer = 0; | |
int forward = 0, backward = 0; | |
std::sort(A.begin(), A.end()); | |
std::sort(B.begin(), B.end()); | |
int endIndex = A.size(); | |
for (int i = 0; i< endIndex; i++) | |
{ | |
forward = A[i]; | |
backward = B[endIndex - i - 1]; | |
answer += forward * backward; | |
} | |
return answer; | |
} | |
int main() | |
{ | |
vector<int> tA{1,2}, tB{3,4}; | |
//아래는 테스트 출력을 위한 코드입니다. | |
cout<<getMinSum(tA,tB); | |
} |
'Programming > C++' 카테고리의 다른 글
프로그래머스 Level 1.약수의 합 (0) | 2017.12.15 |
---|---|
알고리즘 문제 예제 4 (0) | 2017.12.06 |
알고리즘 문제 예제 3 (0) | 2017.12.06 |
알고리즘 문제 예제 2 (0) | 2017.12.06 |
알고리즘 문제 예제 1 (0) | 2017.12.06 |