프로그래머스 : 자릿 수 더하기
주어진 숫자의 각각의 자릿수에 값을 더해 값을 반환하는 문제입니다.
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
N의 범위 : 100,000,000 이하의 자연수
입출력 예
N | 결과 |
---|---|
123 | 6 |
987 | 24 |
1. 해설
소스보기
function solution(n)
{
var answer = 0;
let x = n.toString().split("");
x.forEach(e => {
answer += parseInt(e);
});
return answer;
}
숫자의 각각의 자릿수 값을 따로 분리하려면 일단 문자열로 바꿔야 합니다. 문자열로 바꾸는 방법은 toString( ) 메서드를 사용하면 바꿀 수 있습니다.
그 후 반복문으로 문자열을 다시 숫자로 바꾼 값을 합하면 값이 도출 됩니다. 이 때 문자열을 숫자로 바꾸는 메서드로 parseInt를 사용할 수 있습니다.
※ parseInt(string)
문자열을 실수로 바꾸는 함수입니다.
- 수로 시작할 때 그 수를 실수로 바꿉니다.
- 띄어 쓰기로 여러 개의 수가 있으면 첫번째 수만 바꿉니다.
- 공백으로 시작하면 공백은 무시합니다.
- 수가 아닌 문자로 시작하면 NaN을 반환합니다
2. 다른 풀이
소스보기
function solution(n){
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
n의 값을 똑같이 split 메서드로 나누지만 reduce를 통해 값을 합하여 도출하는 방법입니다.
이 때 parseInt 뒤에 0을 넣는 이유는 reduce의 initial value는 첫 acc 값이기에 0을 넣어서 acc 초기값을 정수화 해줘야하기 때문입니다.(문자열 + 정수 = 문자열이됨)
댓글