자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
N | answer |
---|---|
123 | 6 |
987 | 24 |
function solution(n) {
return n.toString().split("").reduce((acc,cur) => acc + parseInt(cur, 10) , 0 );
}
123의 각각을 한 자릿수씩 배열의 요소로 넣기 위해서 우선 문자열로 만들어 준 뒤, String.prototype.split()
을 사용하여 한 자릿수씩 배열의 요소로 넣었다. 누적값을 구하기 위해 reduce()
를 사용하였고 각각의 요소가 문자열로 들어가 있으므로 parseInt()
를 사용하여 숫자로 바꾸어준 뒤 누적값에 더하였다.
아래는 for문을 이용한 답안이다. reduce()
를 사용한 답안보단 길지만 더 직관적이다.
for문 사용
function solution(n) {
const newArr = n.toString().split("");
let answer = 0;
for (let a of newArr) {
answer += +a;
}
return answer;
}
function solution(n){
return [...(n+"")].reduce((acc, curr) => acc + curr*1);
}
내 답안과 같은 방식이지만, 숫자를 문자열 배열로 바꿔주는 방법을 spread operator로 사용했다. 문자열이 이터러블하다는 걸 알고 있었는데, spread operator는 모든 이터러블한 것들을 전개 구문해줄 수 있다는 걸 모르고 있었다. 🙄 이번 기회에 새로 알게 돼서 기억해놓기!