자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
N의 범위 : 100,000,000 이하의 자연수
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
function solution(n)
{
var answer = 0;
var arr = String(n).split("");
for(let i =0; i < arr.length; i++){
answer += Number(arr[i])
}
return answer;
}
이 방법은 하샤드 수 풀이 때 방법이 생각나서 똑같이 코드를 작성했다.
하샤드 수는 떨어지는 값이면 true 값을 출력하는 문제였다.
function solution(n){
return n.toString().split("").reduce((prev,cur) => prev + parseInt(cur),0);
// (입출력 예 첫번째)
// prev는 0 값을 가져온다.
// 0 + 1 = 1
// 1 + 2 = 3
// 3 + 3 = 6
// (입출력 예 두번째)
// 0 + 9 = 9
// 9 + 8 = 17
// 17 + 7 = 24
}
많은 다른 방법 풀이가 있었지만 이 풀이가 내가 잘 이해할 수 있어서 가져왔다.
n.toString().split("")
변수에 저장하지 않고 바로 n.toString 하는 방법이 더 간단하고 코드 길이도 줄일 수 있는 좋은 방법인 것 같다.reduce
의 고차 함수를 사용하여 prev, cur 인자를 가져와서 parseInt
를 사용하여 값을 더해주는 풀이 방법이다. 이건 정말 좋은 방법인 것 같다.reduce
는 배열의 각 요소를 순회하며 callback 함수의 실행 값을 누적하여 하나의 결과값을 반환하는 것이다.자바스크립트에 내장되어 있는 함수로, 말 그대로 문자열을 파싱하여 문자열에 포함된 숫자를 찾아서 number로 형변환을 시켜준다.
let age = parseInt('40');
console.log(age, typeof age); // 30, number
let str = parseInt('123숫자들');
console.log(str); // 123
Number
를 왜 사용하는지 그때 당시는 이해가 안 갔는데 Number를 쓰는 이유는 parseInt
처럼 넘버로 형 변환을 시켜주는 것이다.