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

자바스크립트로 숫자 자릿수의 합이 회문인지 확인하는 방법

문제 개요

자바스크립트로 하나의 숫자를 입력받아 각 자릿수의 합을 구한 뒤, 그 합이 회문(Palindrome)인지 판별하는 함수를 작성해야 합니다. 여기서 회문이란 앞에서 읽어도 뒤에서 읽어도 동일한 숫자를 의미합니다. 함수는 자릿수의 합이 회문일 경우 true, 그렇지 않으면 false를 반환해야 합니다.

예를 들어, 입력값이 697이라면 각 자릿수의 합은 6 + 9 + 7 = 22가 됩니다. 22는 거꾸로 읽어도 22이므로 회문 숫자에 해당합니다.

따라서 이 함수는 697에 대해 true를 반환해야 합니다.

예제 코드

다음은 위 문제를 해결하는 자바스크립트 코드입니다.

const num = 697;
const sumDigit = (num, sum = 0) => {
   if(num){
      return sumDigit(Math.floor(num / 10), sum + (num % 10));
   };
   return sum;
};
const isPalindrome = num => {
   const revered = +String(num)
   .split("")
   .reverse()
   .join("");
   return revered === num;
};
const isSumPalindrome = num => isPalindrome(sumDigit(num));
console.log(isSumPalindrome(num));

코드 설명

sumDigit 함수: 재귀 호출을 활용해 숫자의 각 자릿수를 더합니다. num % 10으로 마지막 자릿수를 추출하고, Math.floor(num / 10)으로 마지막 자릿수를 제거한 값을 다시 전달하며, 숫자가 0이 되면 누적된 합계를 반환합니다.

isPalindrome 함수: 숫자를 문자열로 변환한 뒤 split(), reverse(), join()을 사용해 문자열을 뒤집고, 원래 값과 비교하여 회문 여부를 판단합니다.

isSumPalindrome 함수: 앞의 두 함수를 조합하여, 자릿수의 합이 회문인지 최종적으로 확인합니다.

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

true