Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 숫자의 자릿수 합이 회문(팰린드롬)인지 확인하는 방법

문제 정의

숫자 num을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.

이 함수는 num의 각 자릿수를 모두 더한 값이 회문(팰린드롬) 숫자라면 true를, 그렇지 않다면 false를 반환해야 합니다.

입력 예시

const num = 781296;

출력 예시

const output = true;

출력 설명

781296의 각 자릿수를 더하면 다음과 같습니다.

7 + 8 + 1 + 2 + 9 + 6 = 33

33은 앞에서 읽어도 뒤에서 읽어도 33으로 동일한 회문 숫자이므로, 결과는 true가 됩니다.

구현 코드

const num = 781296;

// 재귀적으로 각 자릿수의 합을 구하는 함수
const findSum = (num, sum = 0) => {
  if (num) {
    return findSum(Math.floor(num / 10), sum + (num % 10));
  }
  return sum;
};

// 자릿수 합이 회문인지 판별하는 함수
const palindromeDigitSum = (num = 1) => {
  const sum = findSum(num);
  const str = String(sum);
  const arr = str.split('');
  const reversed = arr.reverse();
  const revNum = +arr.join('');

  return revNum === sum;
};

console.log(palindromeDigitSum(num));

실행 결과

true

코드 동작 원리

이 코드는 크게 두 단계로 나누어 동작합니다.

1단계: 자릿수 합 계산 (findSum)

findSum 함수는 재귀 호출을 활용해 자릿수의 합을 구합니다. num % 10으로 마지막 자릿수를 추출하고, Math.floor(num / 10)으로 이미 더한 자릿수를 제거한 뒤, num이 0이 될 때까지 반복합니다.

2단계: 회문 여부 판별 (palindromeDigitSum)

구한 합을 문자열로 변환한 후, split()으로 배열로 만들고 reverse()로 뒤집은 다음 다시 join()으로 합쳐 원래 값과 비교합니다. 두 값이 같다면 회문이므로 true를 반환합니다.

이처럼 재귀 함수와 문자열 조작만으로도 별도의 라이브러리 없이 간단하게 문제를 해결할 수 있습니다.