쉽게 말해서
A와 B 두개의 숫자 배열에서
겹치지 않도록 각각의 자릿수를 각각 곱하고 더한 값이 최소값
이 되어야 하는 문제이다.
[1, 2] [3, 4]
의 두 배열이 있다고 가정했을때,1 x 4
를 한 후에 2는 남아있는 3과 곱해야 하며, 10
이 나온다는 뜻이다!문제가 굉장히 장황(?)하게 써져있다보니 문제를 읽는 첫 단계를 제외하고는
비교적 간단하게 문제를 해결할 수 있었다.
첫 풀이 (1트성공)
const solution = (A,B) => {
let answer = 0;
const arrA = A.sort((a, b) => a - b);
const arrB = B.sort((a, b) => b - a);
for(let i = 0; i < A.length; i++){
answer += arrA[i] * arrB[i]
}
return answer;
}
문제 자체는 굉장히 쉽게 접근했다.
생각해보면, 곱한 값을 통해서 최소값을 만들기 위해서는
큰수 X 작은수
와 같이 곱셈이 진행되어야 하며,
이를 처음부터 쉽게 접근하기 위해서
배열A
와 같은 경우에는 오름차순
,
배열B
와 같은 경우에는 내림차순
으로 배열의 순서를 변경하여
각각의 index자리와 매칭되는 숫자들을 곱할 수 있도록 해주었다.