[월간 코드 챌린지 시즌2] 음양 더하기

kich555·2021년 11월 4일
0

Algorithm

목록 보기
4/5

💻음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

☕첫번째 풀이

function solution(absolutes, signs) {

    var answer = 0
    const list = []
    
    for(let i=0; i<absolutes.length; i++) {
   	let a = signs[i] ? absolutes[i] : -absolutes[i]
    list.push(a)
    }
    
    answer = list.reduce((a,b) => (a+b))
    return answer;
}

빈 배열 list를 만들고 for문에서 반환하는 값을 push 메소드로 list에 넣었다. 이 후 reduce를 사용해 배열의 모든 값을 더했다.

☕리팩토링

일단 필요없는 변수들을 제거하자

function solution(absolutes, signs) {
    var answer = 0
    
    for(let i=0; i<absolutes.length; i++) 
signs[i] 
    ? answer += absolutes[i] 
    : answer -= absolutes[i]
    }
   
    return answer;
}

default로 있었던 answer변수를 제외한 모든 변수를 지우고 식을 수정했다.

☕리팩토링 2

reduce 메소드를 사용하여 식을 간결화 해보았다.

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

}

한줄만에... 그것도 reduce를 사용해서 풀 수 있는 문제였다니....
reduce에 대한 이해가 부족했던걸로

profile
const isInChallenge = true; const hasStrongWill = true; (() => { while (isInChallenge) { if(hasStrongWill) {return 'Success' } })();

0개의 댓글