반응형
Notice
Recent Posts
Archives
Today
Total
Link
관리 메뉴

꾸준하게

[JS코딩테스트] 자릿수 더하기 본문

JS코딩테스트

[JS코딩테스트] 자릿수 더하기

DaeunCoding 2023. 3. 23. 07:32
728x90
반응형

⬇️ 문제 링크
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이 됨.
 
 
 

728x90
반응형