function solution(A,B){
let ch = Array.from({length:B.length}, () => 0);
let answer = Number.MAX_SAFE_INTEGER;
function Abs (L, sum) {
if (L>=A.length) {
if (sum < answer) {
answer = sum;
}
}
else {
for (let i=0; i<B.length; i++) {
if (ch[i]==0) {
ch[i]=1;
Abs(L+1, sum + A[L]*B[i]);
ch[i]=0;
}
}
}
}
Abs(0, 0);
return answer;
}
console.log(solution([1, 4, 2], [5, 4, 4]));
// console.log(solution([1, 2], [3, 4]));
function solution(A,B){
let ch = Array.from({length:B.length}, () => 0);
let answer = Number.MAX_SAFE_INTEGER;
function Abs (a,b, sum) {
if (a.length<=0) {
answer = Math.min(answer, sum);
}
else {
let tmp = a.shift();
for (let i=0; i<b.length; i++) {
if (ch[i]==0) {
ch[i]=1;
Abs(a.slice(), b, sum + (tmp*b[i]));
ch[i]=0;
}
}
}
}
Abs(A,B, 0);
return answer;
}
// console.log(solution([1, 4, 2], [5, 4, 4]));
console.log(solution([1, 2], [3, 4]));
그냥 A의 제일 작은 값과 B의 제일 큰값을 곱해서 똑같은 인덱스로 전부 더하면 그게 최소값이래. 그래서 sort만 잘 쓰면 되네...대체 왜!!?!?!??
function solution(A,B){
A.sort((a,b)=>a-b);
B.sort((a,b)=>b-a);
let answer = 0;
for (let i=0; i<B.length; i++) {
answer += A[i]*B[i]
}
return answer;
}
// console.log(solution([1, 4, 2], [5, 4, 4]));
console.log(solution([1, 2], [3, 4]));