헬리'Daily/꾸준한 알고리즘

[프로그래머스] 코테 (자릿수 더하기)

헬리이 2023. 8. 13. 17:34
728x90

 

 

나의 코드

function solution(n) {
    return String(n).split('').reduce((sum, digit) => sum + parseInt(digit,10),0);
}

 

 

설명

1. String(n)

: 주어진 정수 n을 문자열로 변환한다. =>  이렇게 함으로써 정수의 각 자리 숫자를 하나씩 분리하고 처리할 수 있음!!

 

2. .split('')

: 변환된 문자열을 빈 문자열 ''을 기준으로 나눈다. =>  이 결과로 배열이 생성되며, 각 배열 요소는 문자열의 각 자리 숫자를 담게 된다. 

 

3. .reduce((sum, digit) => sum + parseInt(digit, 10), 0)

: 배열을 reduce() 함수를 사용하여 합산하는 작업을 가진다 =>  reduce() 함수는 배열의 각 요소에 대해 주어진 함수를 순차적으로 적용하면서 하나의 결과값을 생성한다. 

이때,

- sum은 누적 합을 의미한다. 초기값으로 0을 설정
- digit은 배열의 각 요소인 문자열로 표현된 숫자이다.
- parseInt(digit, 10)은 문자열을 10진수 숫자로 변환하는 과정이다.
- sum + parseInt(digit, 10)을 통해 누적 합에 각 자리 숫자를 더한다.

 

 

reduce() 에 대해서 좀 더 자세하게 알아보려 한다. 

좀 헤맸어서 🥲..!

 

 

 

Array.prototype.reduce()

배열의 각 요소에 대해 주어진 함수를 순차적으로 적용하면서 하나의 결과값을 생성하는 메서드로,  이 메서드는 배열을 하나의 값으로 줄이는(reduce) 작업을 수행한다. 

 

 

 

reduce() 메서드는 다음과 같은 형식을 가진다.

arr.reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)

 

 

callback: 각 요소에 대해 실행할 함수로서 4개의 매개변수를 받는다.

 

1.  accumulator: 누적값으로서, 함수가 실행될 때마다 누적되는 값

2.  currentValue: 현재 처리 중인 배열 요소의 값

3.  currentIndex: 현재 처리 중인 배열 요소의 인덱스

4.  array: reduce() 메서드를 호출한 배열 자체

 

initialValue (선택사항): 함수의 첫 번째 호출 시 초기값으로 사용되는데,  만약 이 매개변수가 제공되지 않으면 배열의 첫 번째 요소가 초기값으로 사용된다. 

 

 

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

 

Array.prototype.reduce() - JavaScript | MDN

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

developer.mozilla.org

 

728x90