🗃️javascript/프로그래머스

자릿수 더하기(Lv.0)(toString, Number() 사용하기)

하얀성 2022. 12. 29. 15:46
<문제 설명>

 

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요


제한사항
  • 0 ≤ n ≤ 1,000,000

입출력 예nresult
1234 10
930211 16

입출력 예 설명

입출력 예 #1

  • 1 + 2 + 3 + 4 = 10을 return합니다.

입출력 예 #2

  • 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

1. 참조내용

n이 배열이 아니어도.. n. 함수명()으로 사용이 가능하다.

 

 

<제출 답안>

function solution(n) {
    
    return n.toString().split("").reduce((a,b) => a + b)
}

1234
기댓값 10
실행 결과 실행한 결괏값 "1234"이 기댓값 10과 다릅니다.
테스트 2
입력값 930211
기댓값 16
실행 결과 실행한 결괏값 "930211"이 기댓값 16과 다릅니다.

위와 같은 에러가 뜬다. 

알고보니.. 문자열의 요소들을 숫자로 돌려주지 않아서이다.

split는 문자열을 각각 쪼개서 문자를 각 요소로 쓰는 배열을 만들어주는것. 

각 문자들을 더하면 당연히.. 저렇게 다시 문자열로 돌아갈 수 밖에...

 

function solution(n) {
    
    return n.toString().split("").reduce((acc,b) => Number(acc) + Number(b),0)
}

 

이런식으로 Number을 써서 합을 더해주고, 초깃값을 0으로 지정해주지 않으면 초깃값이 문자열이 되어 오류가 발생.


<참조 내용>

1. toString()으로 숫자를 문자열로 변환

toString() 메소드를 사용하여 숫자를 문자열로 변환할 수 있습니다.

 

2. String()으로 숫자를 문자열로 변환

String() 메소드를 사용하여 숫자를 문자열로 변환할 수 있습니다.

 

 

%

toString()과 String()은 형변환만을 해줄 때 둘의 차이는 전혀 없다.

하지만 String()은 undefined나 null이 들어온 경우에도 그대로 문자로 반환해주는 반면에 toString()은 TypeError을 뱉어버린다.

ㅡㅡㅡㅡ> 오류가 발생했을 때 toString은 오류그대로 출력, String은 자신의 오류를 숨긴채 출력하게 됨.

 


3. Number()

Number()은 문자열을 숫자로 변환하는 함수입니다.

문법

Number( object )
  • object : 문자열 또는 문자열을 값으로 하는 변수 등을 입력합니다.
  • 숫자로 변환할 수 없는 값인 경우 NaN을 반환합니다.