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

Algorithm/문제풀이

2023. 2. 18. 03:33


문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

두 배열의 성분끼리 곱한 값들을 더하여 만든 총합 중 최솟값을 구하는 문제이다.

 

나의 풀이 전략

A 행렬은 오름차순 정렬,

B 행렬은 내림차순 정렬한다.

 

상세

1. 위 풀이 전략을 그대로 실행한다.

더보기
sort(A.begin(), A.end()); // 오름차순 정렬
sort(B.rbegin(), B.rend()); // 내림차순 정렬

 

2. 정답을 구한다.

더보기
for(int i = 0; i < A.size(); ++i)
{
    answer += A[i]*B[i];
}

 

전체 소스코드

#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.rbegin(), B.rend());

    for(int i = 0; i < A.size(); ++i)
    {
        answer += A[i]*B[i];
    }

    return answer;
}