Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "자릿수 더하기"

by 별의 코비 2022. 11. 1.
728x90

🔥 Programmers Lv.1 : 자릿수 더하기


🔍 문제 : " 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. "

📎 조건 :
∙ N의 범위 : 100,000,000 이하의 자연수


👉🏻 My answer

function solution(n){
    let sum = 0;
    let answer=String(n).split("");
    for(let i=0; i<answer.length; i++){
        let num = parseInt(answer[i]);
        sum += num;
    }
    return sum;
}
solution(123);
01. n인 123을 먼저 한 개씩으로 나눠주기 위해 문자열로 바꿔 split메서드를 이용하여 한 자릿 수로 나누어 주었습니다.
02. 한 자릿 수로 나눈 answer는 ["1", "2", "3"]이 상태이며 인덱스별 값 "1", "2", "3"을 1,2,3과 같이 숫자로 변환하기 위해 parseInt()를 사용하였습니다.
03. 숫자로 바뀐 값의 총합(sum)을 구해 sum을 리턴해주면 자릿수를 더한 값의 결과를 도출할 수 있습니다.


👉🏻 Another ways

function solution(n){
    // 쉬운방법
    return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
: reduce의 initial value는 첫 acc 값입니다. 즉, 0을 넣어서 acc 초기값을 정수화 해주는 겁니다("문자열 + 정수 = 문자열" 방지차원). initial value를 지정하지 않는다면 parseInt(acc) + parseInt(curr)로 하면 될 것 같습니다.
: n+""은 숫자 + 문자열의 형태이기 때문에 결과적으로 문자열 n을 반환합니다. = String(n)
function solution(n) {
    var arr = n.toString().split('');
    var sum = 0;
    arr.forEach(element => {
        sum += parseInt(element);
    });
    return sum;
}
: forEach문을 이용해서 더욱 간결하게 표현해주었습니다.

댓글