알림
본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/76501
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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을 판별하여 곱하여 결과를 도출하면 됩니다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 가운데 글자 가져오기(JavaScript) (0) | 2022.07.26 |
---|---|
[Programmers] 서울에서 김서방 찾기(JavaScript) (0) | 2022.07.26 |
[Programmers] 부족한 금액 계산하기(JavaScript) (0) | 2022.07.26 |
[Programmers] 문자열 내 마음대로 정렬하기(JavaScript) (0) | 2022.07.24 |
[Programmers] 나누어 떨어지는 숫자 배열(JavaScript) (0) | 2022.07.23 |
댓글