[프로그래머스] 최솟값 만들기

Jun_Gyu·2023년 10월 9일
0

프로그래머스

목록 보기
14/14
post-thumbnail

쉽게 말해서
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자리와 매칭되는 숫자들을 곱할 수 있도록 해주었다.

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글