프로그래머스 | 자릿수 더하기

isthis·2021년 11월 11일
0
post-thumbnail

문제 설명

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

제한사항

N의 범위 : 100,000,000 이하의 자연수

입출력 예

Nanswer
1236
98724

풀이

자연수 N을 입력받는다.
자연수 N을 문자열로 변환한다.(문자열을 더하는 방식이 처리 속도가 가장 빠르다.)
N을 마디마디 나눈 후 각 배열들의 값을 숫자로 변환하고 전부 더해준다.
전부 더해준 값을 출력한다.

코드

function solution(n) {
  let answer = n + "";
  let sum = 0;
  return answer.split("").map((summary) => (sum = +summary + sum))[
    answer.length - 1
  ];
}

숫자로 변환 할 때 연산자를 이용한 방법을 사용했는데, Number()함수랑 속도 차이가 크게 없다고 한다. 따라서 직관적인 Number()함수를 사용하는 것이 앞으로는 더 올바를 것 같다.

다른 사람 코드

function solution(n) {
  var sum = 0;

  do {
    sum += n % 10;
    n = Math.floor(n / 10);
  } while (n > 0);

  return sum;
}

나는 문자열을 이용해 계산한 반면, 이 분은 숫자계산만으로 값을 도출하였다.
처리 속도가 훨씬 빠르다,,ㄷ ㄷ
이런 사고는 어떻게 길러야 할까라는 고민을 던져준 코드였다.

profile
공부

0개의 댓글