정수 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을 반환합니다.
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
순서쌍 구하기(Lv.0)(=약수 갯수 구하기) (0) | 2022.12.29 |
---|---|
제곱수 판별하기(Lv.0)[Math.sqrt()와 Number.isInteger(+ .isArray)] (0) | 2022.12.29 |
배열의 유사도(Lv.0)(배열 간의 교집합, 차집합, 대칭차집합)(if문, 반복문) (1) | 2022.12.29 |
문자열안에 문자열(Lv.0)(includes와 indexOf 사용해보기) (0) | 2022.12.29 |
문자 반복 출력하기(Lv.0)([...str] 응용해보기, repeat()) (0) | 2022.12.29 |