
각 자릿수를 더하기 위해 10으로 나눠서 계산하는 방법으로 풀었는데, 문자열로 변환해서 푸는 방법도 있어 두 가지 다 풀어보았다.
문자열로 변환하기 위해서는 .toStirng() 또는 String()을 쓸 수 있는데 이 두가지의 차이점이 궁금해서 아래에 정리해놓았다.
문자열로 변환 후 덧셈을 하려는데
let answer = num.reduce((acc,cur) => {
return acc + cur;
},0)
이렇게 식을 쓰니까 n=123일 때 실행한 결과값이 "0123"이 되었다.
문자로 인식해 덧셈을 하면 옆으로 붙게 되어서 숫자 처리를 해주기 위해return acc + (cur*1)로 수정했다. (parseInt(cur), Number(cur)로도 숫자 처리 가능)
const solution = (n) => { let answer = 0; while(n>0) { mod = n%10; n = Math.floor(n/10); answer += mod; } return answer; }
const solution = (n) => { let num = String(n).split(''); let answer = num.reduce((acc,cur) => { return acc + (cur*1); },0) return answer; }
더 줄여서 쓰면
const solution = (n) => { return String(n).split('').reduce((acc,cur) => acc + (cur*1),0); }
String(thing);매개변수
thing: 문자열로 변환할 아무 값
obj.toString();
우선 표기법에서 차이가 나고, 두 가지 방법 중 다음과 같은 이유로 String()을 사용하는 걸 권장한다.
.toString()은 진법 변환이 필요한 경우 사용할 수 있다.num.toString(radix)let baseTenInt = 10; console.log(baseTenInt.toString(2)); // "1010"이 출력됩니다 let bigNum = BigInt(20); console.log(bigNum.toString(2)); // "10100"이 출력됩니다.toSgring() 사용 시 주의 사항
참고