본문 바로가기
자료구조 & 알고리즘

프로그래머스 최솟값 만들기 - 자바스크립트 코드

by PARADISE247 2024. 11. 24.
반응형
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

Hey 거기 코딩하는 cutie 😏

문제에 의하면 주어진 두 배열 A,B에서 각각 한 개씩 숫자를 뽑아 곱하고 이 과정을 배열의 길이만큼 수행한 다음 각 곱셈에 대한 값들을 누적으로 합한 답 중 최솟값을 반환해야 한다. 

최솟값을 구하는 방법은 쉽다. A 배열에서 가장 큰 수, B 배열에서 가장 작은 수를 곱하고 그 다음으로 A 배열에서 가장 큰 수 그 다음으로 B 배열에서 가장 작은 수를 곱하는 식으로 반복하면 된다. 물론 B 배열에서 가장 큰 수와 A 배열에서 가장 작은 수를 찾아내며 곱하는 방식을 채택해도 상관없다. 

나는 A 배열에서는 가장 작은 수를 B 배열에서는 가장 큰 수를 찾아서 곱하는 방식을 채택했다.

따라서 코드를 보면 A 배열은 오름차순으로 B 배열은 내림차순으로 정렬해준다. 

A.sort((a,b) => a-b);
B.sort((a,b) => b-a);

이 후 reduce 문을 이용해 다음과 같이 누적합을 알아낸다. 이 값을 반환해주면 끝이다.

return A.reduce((a,c,i)=> {
  return a + c * B[i];
},0);

전체 코드는 다음과 같다. 

function solution(A,B){
    A.sort((a,b) => a-b);
    B.sort((a,b) => b-a);
    return A.reduce((a,c,i)=> {
        return a + c * B[i];
    },0);
}

 

반응형