찰리의 이야기

Javascript 자릿수 더하기 본문

찰리: 코딩 연습

Javascript 자릿수 더하기

쨜리 2021. 8. 26. 17:50
반응형

Javascript 자릿수 더하기

문제 : 
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

제한사항

  • N의 범위 : 100,000,000 이하의 자연수

function solution(n)
{
    var answer = 0;

    return answer;
}

자연수를 입력해야하는데,

각 자리수를 더해야한다. 

결국은 이 부분에서 자연수의 일반적인 형태로 다루는 것이 아니라,

문자열 인덱스로 다루어서 쪼갠다음,

다시 자연수처럼 변환하여 더하는 것을 실행한다고 생각했다.

 

구현해야할 순서를 적어보았다.

 

1. 받은 자연수를 문자열로 바꾼다.

2. 문자열 인덱스를 탐색하여 문자열로 쪼갠 다음

3. 다시 자연수로 변환하여 더한다.

 

function solution(n)
{
    let answer = 0;
    
    let stringNum = n.toString();
    // 자연수를 문자화하여 stringNum 변수에 할당한다.

    return answer;
}
function solution(n)
{
    let answer = 0;
    
    let stringNum = n.toString();
    // 자연수를 문자화하여 stringNum 변수에 할당한다.
	
    for(let i=0; i<stringNum.length; i++){
   		answer = answer + parseInt(stringNum[i]);
    }
    // 문자열 인덱스를 for 반복문으로 탐색하면서 
    // 하나 하나의 문자열을 parseInt로 숫자로 변경한 다음
    // answer 에 더해줍니다.
    
    return answer;
}

여기까지가 제가 구현한 형태이고,

다른 풀이법도 살펴보았다.

가장 간단해 보이는 방법은 reduce 를 사용하는 것이었다.

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

여기서 자연수에다가 ""를 더하는 것은 
Javascript의 형변환 법칙을 사용한 것이다.

 

Javascript에서는 자연수에 문자열을 더할 경우 자동으로 문자열이 된다.

반대로 문자열에 자연수를 곱하면 자동으로 자연수가 된다.

이때 배열 메서드인 reduce를 사용하기 위해,

문자열을 split으로 문자열 하나하나의 인덱스로 구성된 배열로 변환을 하고,

acc + parseInt(curr) 라는 리듀서 함수를 실행시키는 것이다.

 

배열로 변환하여, 리듀서 함수를 활용할 생각을 잘 떠올린 것 같다.

배열 요소 하나하나 마다 값을 더하는 작용을 거쳐 

하나의 값을 반환하는 경우에는 

리듀스를 이용해보자!

 

오늘의 연습 끝.

 

 

Javascript 자릿수 더하기

 

반응형
Comments