본문 바로가기
Algorithm/Programmers

[Programmers] 음양 더하기(JavaScript)

by 백승전 2022. 7. 26.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

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

 

프로그래머스

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

programmers.co.kr

 

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

 

코드

 

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

 

풀이

 

받아오는 absolutes 배열 안에 숫자를 불리언 배열의 요소가 true면 1로 치환해서 곱하고, false면 -1로 치환해서 곱한 수들을 계속 누적해주면 됩니다.

 

반복문을 사용해도 되지만 reduce를 활용해도 풀이가 가능한데요. 왜냐하면 reduce 함수는 배열을 돌며 실행값을 누적하여 하나의 결과값을 반환하기 때문입니다.

 

reduce는 4개의 인자를 갖습니다.
accumulater: 반환값 누적
currentValue: 배열의 현재 요소
index: 배열의 현재 요소 인덱스
array: 호출한 배열

 

따라서 현재 요소 crr와 signs의 현재 요소 인덱스를 가지고 와 계속 곱하여 acc에 계속 더하여 누적해주면 되는데, 곱해줄 때 불리언 배열의 요소에 따라 1과 -1을 판별하여 곱하여 결과를 도출하면 됩니다.

 

댓글