📍 문제
📍 풀이
길이가 같은 2개의 배열에서 각 원소들을 하나씩 매칭시켜 곱해 더했을 때 누적값이 최솟값을 구하려면,쉽게 말해, 두 수를 곱해 최소가 되려면 최대값 * 최소값 을 하면 된다.
따라서A 배열을 오름차순 정렬을 하고B 배열을 내림차순 정렬을 해서
for문을 돌며 각 배열의 같은 index 원소를 곱해 answer에 누적해 주면 된다.
📍 코드
#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());
reverse(B.begin(), B.end());
for (int i{ 0 }; i < A.size(); i++) {
answer += A[i] * B[i];
}
return answer;
}
'백준 & 프로그래머스' 카테고리의 다른 글
[BOJ/백준] C++ 17298번 오큰수 (0) | 2023.07.07 |
---|---|
[프로그래머스] Lv.2 올바른 괄호 C++ (0) | 2023.07.06 |
[프로그래머스] Lv.2 JadenCase 문자열 만들기 C++ (0) | 2023.07.04 |
[프로그래머스] Lv.2 최댓값과 최솟값 C++ (0) | 2023.07.04 |
[BOJ/백준] C++ 1018번 체스판 다시 칠하기 문제 풀이 (0) | 2023.07.01 |