개발하는 kim-hasa

[c++][프로그래머스] 최솟값 만들기 본문

Algorithm/Programmers(c++)

[c++][프로그래머스] 최솟값 만들기

kim-hasa 2021. 8. 23. 14:15

https://programmers.co.kr/learn/courses/30/lessons/12941

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr

A, B 배열에서 하나씩 뽑아서 곱한 값을 더한 값이 가장 작게 만드는 문제입니다.

 

A, B 배열을 정렬한 후, A는 작은것부터, B는 큰것부터 계산해서 더합니다.

#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());   // 정렬
    int len = A.size();
    
    for(int i=0; i<len; i++)    // A작은것부터, B큰거부터 곱해서 계산
    {
        answer += A[i] * B[len-1-i];
    }
    
    return answer;
}