코딩테스트 - 자릿수 더하기

민태영·2023년 5월 22일
0

문제) 주어진 자연수의 자릿수의 합을 구해라

function solution(n) {
	// 받아온 자연수를 문자열로 바꾸고
    let param = String(n);
    // 먼저 자연수의 각 자릿수를 저장하기 위해 배열을 선언
    let arr = [];
    let sumNum = 0;
    // for문으로 배열에 자릿수를 저장한다.
    for(let idx = 0; idx < param.length; idx++) {
        // console.log(); 
        arr.push(Number(param[idx]))
    }
    console.log(arr)
    // map함수로 sumNum변수에 더하기등호로 더하면서 저장 
    arr.map((val) => {
        sumNum += val;
    })
    
    var answer = sumNum;
    
	// 마지막으로 다 더한값을 리턴
    return answer;
}

난 이렇게 풀었는데 다른 사람은 어케 풀었나 궁금해서 봤더니

function solution(n){
    // 쉬운방법
    return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}

어떤 분은 겁나 간소하게 코드를 짜셨다.

(n+"").split("") 

이렇게 하면 매개변수를 String으로 바꿔주고 배열에 하나하나 넣어주지 않아도 String값으로 하나하나 배열에 들어가게 된다.

여기서 reduce라는 함수가 아주 강력하다.

배열.reduce((누적값, 현재값, 인덱스, 요소) => {
	return 결과

}, 초기값);

여기서 누적값은 처음에 초기값으로 할당가능하다.
따라서 위의 풀이는

(n+"").split("") 

로 자릿수의 배열을 만들고 곧이어

reduce((acc, curr) => acc + parseInt(curr), 0)

로 초기값 0인 acc변수에 위의 배열값을 하나씩 출력하는 curr을 더하기 등호로 더하면서 저장하는데 저장하기전 parseInt()로 문자열을 숫자값으로 바꿔서 저장하였다.

결론 reduce함수에 익숙해지자...

profile
꿈을 꾸는 개발자

0개의 댓글