꾸준하게
[JS코딩테스트] 자릿수 더하기 본문
⬇️ 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12931
[나의 풀이]
function solution(n)
{
let string = n.toString();
let sum = 0;
for(i = 0; i < string.length; i++){
sum += Number(string[i]);
return sum;
}
* Object.toString()
우선 숫자를 문자열로 바꿔준다.
* string.length
문자열도 배열처럼 길이를 측정할 수 있다.
문자열의 첫 번째 문자부터 마지막까지 for문으로 반복해준다.
* Number(string)
string을 다시 number로 바꿔준다.
첫 번째 문자부터 마지막까지 반복하며 그 수를 더해준다.
[다른 풀이]
function solution(n){
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
* (n+"")
문자열과 숫자를 더하면 문자열이 된다.
즉, toString()과 같은 값을 반환한다.
123 -> '123'
* split()
문자열을 잘라서 배열로 반환해주는 역할을 한다.
split("")는 가장 작은 단위로 나누는 것, 즉 한 글자씩 나눈다.
'123' -> ['1,'2','3']
* reduce((acc, curr) => 함수식, inn)
acc의 초기값 inn.
acc는 이전 curr을 함수식에 대입하여 받아낸 값.
curr는 현재 input할 값.
reduce((acc, curr) => acc + parseInt(curr), 0)
n = 123이라면, (n+"")과 split("")에 의해 배열 ['1,'2','3']이 됨.
배열을 reduce에 돌리면,
초기값 0인 acc에 parseInt(1), 즉 숫자 1을 더해주고,
1이 된 acc에 parseInt(2)를 더해주고
3이 된 acc에 parseInt(3)을 더해주면 1+2+3 = 6이 됨.
'JS코딩테스트' 카테고리의 다른 글
[JS코딩테스트] 없는 숫자 더하기 (0) | 2023.03.29 |
---|---|
[JS코딩테스트] 뒤에 있는 큰 수 찾기 (아직 실패 중) (0) | 2023.03.26 |
[JS코딩테스트] 짝수와 홀수 (0) | 2023.03.21 |
[JS코딩테스트] 약수의 합 (0) | 2023.03.20 |
[JS코딩테스트] 평균 구하기 (0) | 2023.03.17 |