문제

 

풀이 코드

function solution(A,B){
    let a = A.sort((a,b) => a - b);
    let b = B.sort((a,b) => a - b).reverse();
    let sum = 0;
    
    for (let i = 0; i < a.length; i++) {
        sum = sum + (a[i] * b[i]);
    }
    return sum;
}

 

풀이 과정

우선, A 배열과 B 배열을 모두 정렬하되, 

A배열은 오름차순, B 배열은 내림차순으로 정렬 하였다,

 

이렇게 한 이유는 문제에서 각 요소의 곱을 모두 더하여 최솟값을 만드는 문제였다,

따라서 하나의 배열내의 최대값과,  또 다른 배열내의 최소값을 곱해 모두 더하면 그게 최소값이 될것이다.

 

이렇게 정렬한 후, for 루프를 통해 각 요소의 곱을 sum 변수에 누적 합산 하였다.

 

다른사람의 풀이

function solution(A,B){
    A.sort((a, b) => a - b)
    B.sort((a, b) => b - a)
    return A.reduce((total, val, idx) => total + val * B[idx], 0)
}

풀이 방법이 비슷하지만 reduce 라는 내장함수를 사용하셨다

+ Recent posts