항해 프로그래머스

(이해中)항해3주차 자바스크립트 프로그래머스 - 자릿수 더하기

완두노예 2023. 1. 30. 19:26

처음 풀이

 function solution(n)
{
     let arr = n
     var answer = 0;
    split.n

   for(let i=0;, i < n.length;, i++)
       return arr.reduce((a,b)=>{
           return a+b:
      },0)

    return answer;
}
//n자리 총합구하는게 reduce였나?
//가우스 법칙 썼던가
//(a,b)=>(a+b) 이건뭐더라
//혹시 n을 쪼개놓아야하나?
//367을 그냥 삼백육십칠로 받아들이는것같음...
//쪼개지면->배열->배열요소끼리 더하기

수정 풀이

function solution(n)
{
    var answer = 0;
    var m=String(n);
    
    for(var i=0; i<m.length; i++){
        answer+=parseInt(m[i]);
        
    }
    return answer;
}

Q string을 왜 쓸까 생각해봤는데 숫자를 나누어서 숫자끼리 결합해야되니까 즉, 쪼개지고 배열처리가 가능해서?

A  String은 16비트 부호 없는 정수 값 "요소"로 구성된 집합으로, 각각의 요소가 String의 한 자리를 차지합니다.

첫 번째 요소는 인덱스 0에, 그 다음 요소는 인덱스 1, 그 다음은 2, ...입니다. String의 길이는 그 안의 요소 수와 같습니다.

Q parseInt는 왜 쓴걸까 어차피 조건에 자연수랬으니까 당연히 숫자만 들어가는거 아님? 혹시 소수점들어갈까봐?

A parseInt() 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.

   parseInt는 정수 값을 반환하기 위해 소수점 이하 값을 잘라냅니다.

다른 풀이

function solution(n)
{
    var a = (n + '').split('');
    var b = 0;
    for(var i = 0; i < a.length; ++i) {
        b += parseInt(a[i]);
    }
    return b;
    //return n.toString().split('').reduce((a, b) => (a * 1) + (b * 1));
}
function solution(n) {
    var arr = n.toString().split('');
    var sum = 0;
    arr.forEach(element => {
        sum += parseInt(element);
    });
    return sum;
}
function solution(n)
{
    var answer = 0;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    String(n).split('').map(data => answer += parseInt(data));

    return answer;
}
function solution(n)
{
    var answer = 0;

    n = "" + n;
    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    for(var i = 0 ; i < n.length ; i ++){
        answer += n.charAt(i) * 1;
    }

    return answer;
}
var solution = n => String(n).split('').reduce((a,c)=>a+c*1, 0);
function solution(n)
{
    var answer = 0;
    var m=String(n);

    for(var i=0; i<m.length; i++){
        answer+=parseInt(m[i]);
    }
    return answer;
}
function solution(n)
{
    var answer = 0;

    var list = n.toString().split('');
    answer = list.reduce((prev, curr) => {
        return +prev + +curr
    }, answer)

    return answer;
}
function solution(n)
{
    var answer = 0;
    var str = n+'';
    var len = str.length;

    while(len>0) {
        answer += parseInt(n/Math.pow(10, len-1));
        n = n % Math.pow(10, len-1);
        if(n<10) {
            answer += n;
            break;
        }
        str = n+'';
        len = str.length;
    }

    return answer;
}
function solution(n)
{
    var answer = 0;
    n.toString().split('').forEach(function(i){ answer += parseInt(i) });


    return answer;
}
function solution(n)
{
    return n.toString().split('').reduce(function(i,j) { return parseInt(i) + parseInt(j) }, 0);
}