* 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만드시오.
ex n=123일 경우 1+2+3 =6이 return될 것
제한사항
n의 범위 : 100,000,000 이하의 자연수
function solution(n)
{
var answer = 0;
var m = String(n);
for ( let i = 0; i < m.length; i++) {
answer += parseInt(m[i]);
}
return answer;
}
프로그래머스의 Lv1. 자릿수 더하기를 위와 같이 for문과 숫자인 n을 string으로 변경하는 것을 통해 풀 수도 있지만,
JavaScript의 Reduce 함수를 사용하는 방법이 있어, 필자도 처음 사용해보기에 관련 내용 포스팅을 하게 되었습니다.
reduce 함수란?
reduce 함수는 배열(Array)의 각 요소를 순회하면서 하나의 값으로 줄이는(reduce) 함수입니다.
보통 배열의 모든 값을 합치거나 평균을 구하는 등, 배열을 하나의 값으로 변환할 때 사용합니다.
reduce 함수는 네 가지 인자를 받는데
1. accumulator : reduce 함수 호출을 통해 반환받을 값(누적값)
2. currentValue : 현재 배열 요소
3. currentIndex (선택사항) : 현재 배열 요소의 인덱스
4. array (선택사항) : reduce를 호출한 배열
reduce 함수를 사용한 Js예시 몇 가지..
1. 배열의 합
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, cur) => {
return acc + cur;
}, 0);
console.log(sum); // 15
2. 배열의 최대값
const numbers = [1, 2, 3, 4, 5];
const maxValue = numbers.reduce((acc, cur) => {
return acc > cur ? acc : cur;
}, 0);
console.log(maxValue);
동작 과정
초기 설정
- numbers 배열: [1, 2, 3, 4, 5]
- 초기값 (acc): 0
각 단계별 비교 및 누적
- 첫 번째 순회
- acc (초기값): 0
- cur (현재 값): 1
- 비교: 0 > 1? false
- 결과: acc는 1이 됩니다.
- 두 번째 순회
- acc: 1
- cur: 2
- 비교: 1 > 2? false
- 결과: acc는 2가 됩니다.
- 세 번째 순회
- acc: 2
- cur: 3
- 비교: 2 > 3? false
- 결과: acc는 3이 됩니다.
- 네 번째 순회
- acc: 3
- cur: 4
- 비교: 3 > 4? false
- 결과: acc는 4가 됩니다.
- 다섯 번째 순회
- acc: 4
- cur: 5
- 비교: 4 > 5? false
- 결과: acc는 5가 됩니다.
최종 결과
- 모든 요소를 순회한 후, acc에는 최대값인 5가 저장됩니다.
3. 객체 배열에서 특정 속성의 합 구하기
const items = [
{ name: 'apple', quantity: 2 },
{ name: 'banana', quantity: 3 },
{ name: 'orange', quantity: 1 }
];
const totalQuantity = items.reduce((accumulator, currentValue) => {
return accumulator + currentValue.quantity;
}, 0);
console.log(totalQuantity); // 6
동작 과정
- 초기값으로 accumulator는 0입니다.
- 첫 번째 요소 { name: 'apple', quantity: 2 }의 quantity 값을 accumulator에 더합니다. (0 + 2 = 2)
- 두 번째 요소 { name: 'banana', quantity: 3 }의 quantity 값을 accumulator에 더합니다. (2 + 3 = 5)
- 세 번째 요소 { name: 'orange', quantity: 1 }의 quantity 값을 accumulator에 더합니다. (5 + 1 = 6)
- 모든 요소를 순회한 후 최종적으로 accumulator에는 6이 남습니다.
'Programming Knowledge > Algorithm' 카테고리의 다른 글
[Algorithm]프로그래머스 - 대충 만든 자판(Javascript) (0) | 2024.09.11 |
---|---|
[JavaScript] 프로그래머스 - 기사단원의 무기(약수 시간 복잡도 계산) (0) | 2024.07.18 |
[Javascript] 프로그래머스 - 덧칠하기 (0) | 2024.07.17 |
자바스크립트 js - 최소직사각형[프로그래머스] (1) | 2024.07.10 |
자바스크립트 js - 최대공약수와 최소공배수 [프로그래머스] (0) | 2024.07.05 |