Lv. 1 - 자릿수 더하기 풀이과정
문제 설명
자연수 N
이 주어지면, N
의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N
= 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
입출력 예
N | answer |
---|---|
123 | 6 |
987 | 24 |
입출력 예 설명
3-1) 입출력 예 설명 #1
문제의 예시와 같습니다.
3-2) 입출력 예 설명 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
프로그래머스에서 제공한 코드
처음 프로그래머스에서 작성된 코드는 아래와 같다.
function solution(n) {
var answer = 0;
return answer;
}
문제 풀이
const solution = n => {
const num = n.toString().split('').map(Number);
return num.reduce((a, b) => a + b);
}
함수 선언
- 화살표 함수를 사용하여
n
매개변수를 받는다.
풀이
- 자연수를 배열로 만들기 위해
n.toString().split('')
후map(Number)
메서드를 사용하여 숫자로 변환 - 그리고
reduce()
메서드를 사용하여 배열을 각각 합쳐준 후 반환한다.
결과 반환
- 매개변수
n
에 123을 대입하면 1+2+3 = 6 - 매개변수
n
에 987을 대입하면 9+8+7 = 24
실행
-
console.log(solution(123))
실행하면 6가 출력된다. -
console.log(solution(987))
실행하면 24이 출력된다.
다른 사람의 풀이 참고
이번 문제에서는 숫자를 배열로 만드는 방법을 몰라서 알아보았는데, 다른 사람의 풀이를 통해 다른 방법으로도 배열을 만드는 방법을 알게 되었다.
그리고 마지막에는 문자열 방지차원으로 parseInt 를 넣어주는 사람이 많아서 나도 이 부분까지 신경써야겠다.
(n+'').split('')
// [32명] reduce 메서드를 사용한 풀이방식
function solution(n){
// 쉬운방법
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
// [4명] for 반복문을 사용한 풀이방식
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));
}
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges