JavaScript_19.음양 더하기

hams·2023년 3월 29일
0

algorithm

목록 보기
19/62

Q.

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


나의 풀이 방법1

function solution(a, s) {
    let answer = [] 
    for(let i=0; i < a.length; i++){
        s[i] == true 
        ? answer.push(a[i])
        : answer.push(-a[i])
    }
    
    return answer.reduce((a,b) => a+b);
}

각 배열의 인덱스 값을 매칭시켜서 하나의 정답 리턴
그냥 기본적이고 생각나는대로 풀었다,,

나의 풀이 방법2

function solution(a, s) {
    let result = 0
    a.forEach((e,i) => 
              s[i] == true 
              ? result += (1 * e)
              : result += (-1 * e)
              )
    return result
}

forEach로 풀었는데 딱히 간결해진거 같지 않다?

다른 사람의 풀이

function solution(absolutes, signs) {

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

reduce(누산값, 현재값, 인덱스)
누산값(초기값 0 )
+현재값 곱하기 signs배열의[i]번째가 true(1)라면 양수인 1 false라면 음수인(-1)
굿챱

  • reduce의 세번째 인자로 인덱스 값이 들어오는데,
    그럼 굳이 for문을 쓰지 않아도 된다

0개의 댓글