문제 개요
자바스크립트로 하나의 숫자를 입력받아 각 자릿수의 합을 구한 뒤, 그 합이 회문(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