Oops, All Code!/🤯 Oops, My Algorithm!

♡̈ 13. 프로그래머스:: 음양 더하기

밍동망동 2024. 7. 12. 12:07

 

먼저, absolutes와 signs가 주어질 때 합을 구해야한다.

 

1. absolutes와 signs를 순회하며 각각의 절대값에 부호를 적용한다.
2. 부호를 적용한 정수를 합산해 결과를 반환한다.

 

반복문 사용

function solution(absolutes, signs) {
    let sum = 0;
    
    for (let i = 0; i < absolutes.length; i++) {
        if (signs[i]) {
            sum += absolutes[i];
        } else {
            sum -= absolutes[i];
        }
    }
    
    return sum;
}

 

이렇게 간단한 코드를 제출했는데,

제출하고보니 어차피 동일한 연산을 반복하는거면 reduce도 사용할 수 있지않나 싶다.

 

reduce 사용

function solution(absolutes, signs) {
    return absolutes.reduce((sum, absolute, index) => {
        return sum + (signs[index] ? absolute : -absolute);
    }, 0);
}

 

더 깔끔한 코드를 만들 수 있었다.

 

다른 사람의 풀이 역시 reduce를 사용했는데,

function solution(absolutes, signs) {

    return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}

 

화살표함수이니 return문을 생략해준 것으로 보인다.