자연수 N이 주어지면, 각 자릿수의 합을 더해서 return하는 함수를 완성하라
function solution(n)
{
var answer = 0;
var m = String(n);
for ( let i = 0; i < m.length; i++) {
answer += parseInt(m[i]);
}
return answer;
}
- 각 자릿수를 더해주기 위해서는 숫자인 n의 type을 string으로 바꾸어주어야 한다.
String(n)
을 통해 변경시켜준다answer
인0
에 자릿수를 차례로 더해준다
parseInt()
처리를 해준 이유?
그대로 출력해버리면 문자열로 출력된다. 숫자로 출력해주기 위해parseInt()
를 사용해주었다.Number()
를 사용해도 된다.
function solution(n) {
return String(n).split('').reduce((acc, cur) => acc + cur * 1, 0);
}
- n의 type을 string으로 바꾸어준다
- 문자열에 쓰는 메서드인 split을 사용하여, 각 자릿수 별로 쪼개 배열을 만들어준다. 123이 있다면, ['1', '2', '3'] 이런 식으로.
- 배열에 사용하는 메서드인 reduce를 사용해 각 자릿수의 합을 구해줄 수 있다.
- 현재 reduce메서드의 cur값은 문자열이기 때문에 숫자처리를 해주어야한다.
parseInt(cur)
Number(cur)
cur * 1
과 같은 방법으로 처리해줄 수 있다.
.length
가 적용되지도 않고, 자릿수를 쪼갤 수도 없다. 따라서 문자열로 바꾸어 주는 과정이 필요하다string(숫자) * Number = Number
string(숫자) + Number = String(숫자)
var
와 let
(1) var
var
는 함수 레벨 스코프로, 함수가 아닌 곳에서 var
를 사용해 변수를 선언하면 전역변수(어디에서든지 참조 가능한 값)로 취급한다var
는 중복 선언이 가능하므로 예상치 못한 문제가 생길 수 있다(2) let