[LeetCode] Add Digits

준규·2023년 2월 28일
0

1.문제


Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.


정수 num이 주어질 때 num의 digit을 더하는 과정을 num 이 한자리 수가 될때까지 반복했을 때의 digit의 합을 리턴하는 문제이다.


Example 1

Input: num = 38
Output: 2
Explanation: The process is
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2 
Since 2 has only one digit, return it.

Example 2

Input: num = 0
Output: 0

Constraints:

  • 0 <= num <= 2^31 - 1

2.풀이

1.num을 digit단위로 잘라서 digit의 합을 구한다.
2. digit의 합이 두자리수 이상이면 위의 과정을 반복한다.
3. digit의 합이 한자리수가 되는 순간의 digit의 합을 리턴한다.


/**
 * @param {number} num
 * @return {number}
 */
const addDigits = function (num) {
  let result = 0;
  let sum = 0;
  let nums = String(num).split("");

  while (true) {
    // nums의 digit 총합을 구한다.
    for (let i = 0; i < nums.length; i++) {
      sum += parseInt(nums[i]);
    }

    // digit의 총합을 새로운 num으로 정한다.
    nums = String(sum).split("");

    // 만약 num의 digit이 1이면 sum을 result에 할당한다.
    if (nums.length === 1) {
      result = sum;
      break;
    } else {
      // num의 digit이 1보다 크면 sum을 0으로 초기화
      sum = 0;
    }
  }

  return result;
};

3.결과

profile
안녕하세요 :)

0개의 댓글