알고리즘, CS

[프로그래머스 Lv. 1] 음양 더하기

차돌박이츄베릅 2023. 7. 31. 20:29

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/76501

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

2. 나의 풀이

reduce를 이용하여 계산. if문으로 더하기와 빼기를 조건부 적용하였다.

function solution(absolutes, signs) {
    return absolutes.reduce((calc, curr, idx) => {
        if(signs[idx]) return calc += curr;
        return calc -= curr;
    }, 0)
}

 

 

3. 다른 사람 풀이

프로그래머스의 다른 사람의 풀이를 분석함

 

비슷한 접근법인데 더 깔끔

삼항연산자를 이용하여 1과 -1을 곱해주어 signs를 적용해주었다.

acc에 더한 값을 return만 해줘도 acc에 대입돼있구나..

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

 

 

4. 배운 점

  • +, - 기호를 적용할 때 1과 -1을 곱해버리면 됨.
  • reduce의 acc에 =로 대입을 해줄 필요없이 return하면 acc에 대입됨
  • 반복문 성능: $.each(제이쿼리 객체) > map > filter == forEach > reduce > for loop 순.
    reduce는 내부적으로 최적화가 이루어져있고 가독성과 유지보수성이 좋습니다 코드가 간결해지고 어떨때에는 for문보다 빠릅니다.