문제 설명
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱할때, 누적값이 최소가 되게하여 return
https://school.programmers.co.kr/learn/courses/30/lessons/12941
문제 풀이법
누적값이 최소가 되게하는 방법은 배열 A에서의 작은 값과 배열 B에서의 큰 값을 곱해주며 더하면 된다
따라서 배열 A는 sort을 사용하여 오름차순으로 정렬하고, 배열 B는 sort를 사용하여 내림차순으로 정렬한 뒤, 인덱스끼리 곱해주면 된다
소스 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
return a > b;
}
int solution(vector<int> A, vector<int> B)
{
int answer = 0;
sort(A.begin(), A.end());
sort(B.begin(), B.end(), cmp);
for (int i = 0; i < A.size(); i++) {
answer += A[i] * B[i];
}
return answer;
}
'Algorithm Study' 카테고리의 다른 글
[프로그래머스] 2단계 - 숫자의 표현 (0) | 2023.12.27 |
---|---|
[프로그래머스] 2단계 - 올바른 괄호 (0) | 2023.12.27 |
[프로그래머스] 2단계 - JadenCase 문자열 만들기 (0) | 2023.12.27 |
[프로그래머스] 1단계 - 가장 가까운 같은 글자 (0) | 2023.12.26 |
[프로그래머스] 2단계 - 최댓값과 최솟값 (0) | 2023.12.22 |