https://programmers.co.kr/learn/courses/30/lessons/12931
function solution(n){
return String(n).split('').reduce((acc,val)=>acc + Number(val),0)
}
극한의 한줄충 풀이
reduce를 써서 자릿수들을 더해줬다
다른 풀이보면 String(n)대신 (n+'')를 해줬고
Number(val)대신 parseInt(val)를 해줬다
차이를 살펴보자
1.Number()와 parseInt()
Number()는 string이 숫자로만 이루어져야 숫자로 나오고
parseInt()는 string이 숫자로시작해서 숫자가 나오는 부분까지만 숫자로 나온다
Number('13') = 13
Number('13.13') = 13.13
Number('12.00') = 12
Number('13회') = NaN
예외적으로
Number('') = 0
Number(null) = 0
parseInt('13') = 13
parseInt('13.13') = 13
parseInt('12.00') = 12
parseInt('13회') = 13
parseInt('회13') = NaN
parseInt('13*3') = 13
뿐만아니라 parseInt(string, radix)여서
parseInt('1101',2) = 13 로 진수표현까지 가능
parseInt('1102',2) = 6 (2진수여서 2가 안먹힘)
parseInt('2101',2) = NaN
기능상 Number()가 parseInt()보다 빠르다고 하므로
지금은 string안에 숫자로만 이루어졌기 때문에 Number()를 쓰자
2.(n).toString(), String(n),${}
,n+''
https://hianna.tistory.com/491
여기 잘 나와있다.
String()도 괜찮을 거 같기도한데 n+''이 제일 잘 쓰인다니까 이걸로 쓰자 toStirng()은 진법을 고려해서 toStirng()쓰는 건 좀 느릴 거 같다
function solution(n) {
const nList = (n + "").split("");
let sum = 0;
for (let i = 0; i < nList.length; i++) {
sum += Number(nList[i]);
}
return sum;
}
reduce버리는 풀이 속도면에서 for문이 더 빠르지 않을까 싶지만 확실히 가독성은 reduce가 좋은듯하다