1일 1코테 day 9 에서 분리
드디어 리듀스를 써서 풀어보았다!!
function solution(n)
{ let arr = Array.from(n.toString());
if(arr.length == 1){ answer = n}else{
var answer = arr.reduce((p,q) =>(p*1 + q*1));}
return answer;
}
문자열을 숫자로 바꾸는 함수를 찾아 쓰기 귀찮아서 리듀스의 인수에 각각 1씩 곱하였다.
그런데 재출할때 한 가지 경우에서 오류가 났음
그래서 예외가 되는 경우를 찾아 if 문으로 걸러주었다.
아직 정확한 이유는 생각해보진 않았지만
n이 한자리 수일때 오류가 날 것 같다는 생각으로 걸러주었더니 통과함
추가로 생각해 볼 것
- reduce의 계산 원리
- n.length==1일 때 왜 걸러줘야 하는지
- reduce acc, cur 사용해서 초기값 0으로 해주면 문자열 + 정수가 정수로 되지 않을까??
zi12i님 풀이
function solution(n) {
const arr = Array.from(n.toString()).map(Number);
return arr.reduce((a, b)=> a + b)
}
let num = n 할 필요 없이 바로 n.toString() 쓰면 됨!
.map(Number)는 요소를 순회하며 숫자열로 바꿔줌!!
ㄹㅇ꿀팁
- parseInt() : 받은 문자열을 정수 값으로 반환,
인수를 (str, n)로 하면 n진법으로 표시해줌.- parseFloat() : 받은 문자열 실수 값으로 반환