이번 문제도 역시 도움없이 스스로 풀수 있었다.
주어진 숫자의 각 자리 수를 분리하여서 더한 결과를 리턴 하는 것이었다.
for 문을 활용해서 자리수를 분리하여서 더하고 리턴하는 것으로 문제를 풀수 있었다.
더 쉬운방법이 있을까 고민했는데 이리저리 생각하다가 결과적으로 도출된 로직은 아래와 같다.
function solution(n) {
let result = n+'';
let num = 0;
let plusNum = 0;
for(let i=0;i<result.length;i++){
num=result.slice(i,i+1)*1
plusNum +=num;
}
return plusNum
}
다른 사람의 풀이를 보았는데 문자/숫자로 나눠 푼것이 인상깊었다.
function solution(n){
// 문자 풀이
// return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
// 숫자풀이
var sum = 0;
do {
sum += n%10;
n = Math.floor(n/10);
} while(n > 0);
return sum;
}
문자는 reduce를 활용해서 풀었던데 reduce를 공부해봐야 겠다.
숫자 일때는 10으로나눠 몫으로 떨어진 숫자와 분수화 시켜서 소수를 버림화 처리하여서 덧셈한것 같다 문자와 숫자 모두 접근하여서 문제를 풀다니 대단한것 같다.