1일 1코테 day 30 _ 자릿수 더하기

konut ko·2022년 9월 9일
0
post-custom-banner

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으로 해주면 문자열 + 정수가 정수로 되지 않을까??

넘의 풀이 1

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)는 요소를 순회하며 숫자열로 바꿔줌!!

ㄹㅇ꿀팁

넘의 풀이 2

  • .toString 과 Array.from 대신에 더 간단한 방법으로 바꿔 줄 수 있다는 걸 알았다. (n+"").split("")
    ((string(n)도 있다))
  • parseInt() : 받은 문자열을 정수 값으로 반환,
    인수를 (str, n)로 하면 n진법으로 표시해줌.
  • parseFloat() : 받은 문자열 실수 값으로 반환
profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영
post-custom-banner

0개의 댓글