SONG's 개발새발

1단계) 자릿수 더하기

2019-05-06

문제 : 자릿수 더하기

  • 출처 : 프로그래머스

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

    • 제한사항 : N의 범위는 100,000,000 이하의 자연수

나의 Solution (javascript)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function solution(n) {
var num = String(n);
var ch = [];
for (let i = 0; i < num.length; i++) {
ch.push(num.charAt(i));
}

var answer = 0;

for (let j = 0; j < ch.length; j++) {
answer += Number(ch[j]);
}

return answer;
}

추천 Solution (javascript)

1
2
3
4
5
6
function solution(n) {
return n
.toString()
.split("")
.reduce((prev, cur) => prev + parseInt(cur), 0);
}

사용된 문법

  1. split(‘’)

    • 문자열 분할 메서드
    • '12,3'.split(",") => [‘12’,’3’]
  2. chatAt(인수)

    • 인수번째 문자 추출 메서드
    • 'hello'.charAt(1) => ‘e’
  3. parseInt(string)

    • String => Number로 변환
    • parseInt('123hi') => 123
    • parseInt('hi123') => NaN
  4. reduce( f, n )

    • 배열.reduce(( 누적값, 현잿값, 인덱스, 요소 ) => {return 결과}, 초기값 )
    • f : callback함수, n : initValue(두번째 인자로 생략가능)
    • callback함수에는 4개의 인자를 지정할 수 있다.
      1. accumlated : 누적값
      2. currentValue : 현재의 값
      3. cuurentIndex : 현재 값의 index
      4. array(context) : 배열 (numberList)
    • 배열의 합계로 많이 쓰인다!!
      • arr.reduce((a,b) => a+b)

느낀점

  • 문법을 활용할 수록 코드의 가독성이 높아진다.
  • 알고리즘을 통해 자바스크립트 문법 연습을 해야겠다.