문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12941
문제 설명
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.
문제 입출력 예)
A | B | answer |
[1, 4, 2] | [5, 4, 4] | 29 |
[1, 2] | [3, 4] | 10 |
문제 풀이
- 모든 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());
for (int i = 0; i < A.size(); i++) {
answer = answer + A[i] * B[B.size() - 1 - i];
}
return answer;
}
리뷰
- algorithm의 sort()함수가 중요하다.
'알고리즘 공부 > 프로그래머스 [C++]' 카테고리의 다른 글
프로그래머스 : 다음 큰 숫자 [C++] (0) | 2022.10.27 |
---|---|
프로그래머스 : 숫자의 표현 [C++] (0) | 2022.10.27 |
프로그래머스 : 피보나치 수 [C++] (0) | 2022.10.27 |
프로그래머스 : 올바른 괄호 [C++] (0) | 2022.10.27 |
프로그래머스 : 중간 리뷰 (4일차) [C++] (0) | 2022.10.27 |
댓글