Notice
Recent Posts
Recent Comments
Link
bdfgdfg
[레벨 2 ] 최솟값 만들기 본문
반응형
#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());
int len = A.size();
for(int i = 0; i < len; ++i)
{
answer += A[i] * B[len - i - 1];
}
return answer;
}
두 수를 곱하면서 더한 값이 최솟값이 되게 만들어야한다.
즉 곱하는 두 수가 최대한 작아야한다는 의미. 서로 작은 수 끼리 곱해서 더해봤자 점점 커지는 수 끼리 곱해지기에 의미가 없다.
그렇기에 최대한 큰 수를 가장 작은 수와 매번 곱해주는게 이 문제의 해결방법.
즉
[1, 4, 2] | [5, 4, 4] |
라면
[1, 2, 4] | [4, 5, 5] |
로 정렬 후 가장 작은 수(맨왼쪽) + 가장 큰 수(가장 오른쪽)를 곱하고 더하면 된다.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[레벨 2] 숫자의 표현 (0) | 2021.09.22 |
---|---|
[레벨 2] 최댓값과 최솟값 (0) | 2021.09.20 |
[레벨 2] 행렬의 곱셈 (0) | 2021.09.17 |
[레벨 1] 비밀지도 - 비트연산 (0) | 2021.09.12 |
[레벨 1] 부족한 금액 계산하기 (0) | 2021.09.09 |
Comments