[TIL] 음양 더하기

sooyoung choi·2023년 10월 17일
0

algorithm

목록 보기
2/10
post-thumbnail

🔍 문제

 - 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes,

 - 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 

 - 실제 정수들의 합을 구하여 return 해준다.

⌨️ 입출력 예시

🙋‍♀️ 내가 푼 방식

 - 문제 자체도 이해를 못했었음..

 - reduce 이해하느라 힘들었다

function solution(absolutes, signs) {
    
    // return할 answer 값 선언
    var answer = 0;
    
    // absolutes, signs 각각 연산에 따른 결과 값 넣어 줄 배열 선언
    let newArr = [];
    
    // absolutes와 signs의 길이는 항상 동일
    // 반복문 같은 인자로 돌려도 무방
    for(let i = 0; i < absolutes.length; i++) {
        // signs의 i번째 배열이 true면,
        if(signs[i]) {
            // absolutes의 i번째 배열의 값을 그대로 newArr에 넣어주고,
            newArr.push(absolutes[i]);
        // signs의 i번째 배열이 false면,   
        } else {
            // absolutes의 i번째 배열의 값dp -1 곱해서 newArr에 넣어준다.
            newArr.push(absolutes[i] * -1);
        }
    }
    
    // newArr에 들어있는 정수의 값을 구해야 하니
    // 누산기 메소드 사용
    // acc -> 누적 되어질 값
    // curr -> 첫번째 배열값, 두번째 배열값, ... 각각의 배열값 돈다.
    // function과 같이 초기값 0 주기
    answer = newArr.reduce(function (acc, curr) {
        // 초기값 = 초기값 + 배열의 첫번째 값
        // 초기값 + 배열의 첫번째 값 = (초기값 + 배열의 첫번째 값) + 배열의 두번째 값
        // ex) [4, -7, 12]
        // --> 0 = 0 + 4 
        // -> 4 = 4 + (-7) 
        // -> -3 = -3 + 12 
        // ---> 9
      acc = acc + curr;
      return acc;
    }, 0);
    console.log(newArr)
    return answer;
}

0개의 댓글