[프로그래머스/C++]Lv.2 - 최솟값 만들기

YH J·2023년 6월 9일
0

프로그래머스

목록 보기
128/168

문제 링크

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

내 풀이

A는 오름차순, B는 내림차순으로 정렬 후 각 원소를 곱한걸 answer에 더해준다.

내 코드

#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(),greater());
    sort(B.begin(),B.end());
    for(int i = 0; i <A.size(); i++)
    {
        answer += A[i] * B[i];
    }
    return answer;
}

다른 사람의 풀이

#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B){
    sort(A.begin(),A.end());  sort(B.rbegin(),B.rend());
    return inner_product(A.begin(),A.end(),B.begin(),0);
}

다른 사람의 풀이 해석

A를 오름차순, B를 내림차순으로 한건 똑같고
곱의 합을 구할 때 inner_product를 사용하였다.
#include <numeric>에 포함된 함수로
x2=inner_product(b,e,b2,x)
x2는 x를 초기값으로 시작한 구간 [b,e)와 구간 [b2,b2+e-b)의 내적(두 순차열의 곱의 합)

profile
게임 개발자 지망생

0개의 댓글