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

JavaScript로 숫자 자릿수의 합이 회문인지 확인하는 방법

이번 글에서는 숫자를 입력받아 각 자릿수의 합을 구한 뒤, 그 합이 회문(Palindrome) 수인지 판별하는 JavaScript 함수를 작성해 보겠습니다. 함수는 합이 회문일 경우 true, 그렇지 않으면 false를 반환해야 합니다.

문제 이해하기

예를 들어 입력된 숫자가 697이라고 가정해 봅시다.

각 자릿수를 더하면 6 + 9 + 7 = 22가 됩니다. 22는 앞에서 읽어도 뒤에서 읽어도 같은 회문 수이므로, 함수는 697에 대해 true를 반환해야 합니다.

구현 아이디어

구현은 두 단계로 나눌 수 있습니다.

1단계 – 자릿수 합 구하기: 재귀 함수를 사용해 숫자를 10으로 나누어 가며 마지막 자릿수(num % 10)를 계속 더합니다. 숫자가 0이 되면 누적된 합을 반환합니다.

2단계 – 회문 여부 확인: 숫자를 문자열로 변환한 뒤 split(), reverse(), join()으로 뒤집고, 원래 값과 비교하여 같으면 회문입니다.

예제 코드

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));

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

true

코드 설명

sumDigit 함수는 재귀 호출을 통해 숫자의 모든 자릿수를 더합니다. Math.floor(num / 10)으로 마지막 자릿수를 제거하고, num % 10으로 추출한 자릿수를 누적합에 더하는 방식입니다.

isPalindrome 함수는 숫자를 문자열로 바꾼 후 배열로 분리하고, 순서를 뒤집어 다시 합친 값과 원래 값을 비교합니다. 두 값이 일치하면 해당 숫자는 회문입니다.

마지막으로 isSumPalindrome 함수가 이 두 함수를 연결하여, 자릿수의 합이 회문인지 한 번에 판별해 줍니다.