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

김예지·2021년 10월 18일
0

문제

https://programmers.co.kr/learn/courses/30/lessons/12941


문제 풀이

코드1

function solution(A,B){
    let sum=0;
    A=A.sort((a, b)=>a-b); //오름차순
    B=B.sort((a, b)=>b-a); //내림차순    
    
    for(let i=0; i<A.length; i++){
        sum=sum+(A[i]*B[i]);
    }
    return sum;
}

코드2

function solution(A,B){
    let sum=0;
    A=A.sort((a, b)=>a-b); //오름차순
    B=B.sort((a, b)=>b-a); //내림차순    
    
    return A.reduce((total, val, idx) => total + val * B[idx], 0)
}

누적값이라서 reduce를 어떻게 사용해야할지, 고민하다가 못풀었는데 좋은 풀이가 있어서 가져왔다.
reduce mdn을 참고해보니, 인자가 누산기, 현재값, 현재인덱스, 원본배열이다. 이 중 누산기, 현재값, 현재인덱스를 넣어서 문제를 풀 수 있었다. 인자와 매개변수를 잘 구분해서 보면 문서를 더 쉽게 이해할 수 있을 것 같다.


참고

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 27일

10/27
'큰수*작은수'가 '큰수*큰수'보다는 더 작다! 이 원리를 잘 기억하자

답글 달기