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

자바스크립트로 숫자의 자릿수 세는 방법 완벽 가이드

이번 문제의 요구 사항은 간단합니다. 숫자를 입력받아 그 숫자가 몇 자리인지 반환하는 자바스크립트 함수를 작성하는 것입니다.

문제 이해하기

예를 들어 다음과 같은 결과가 나와야 합니다.

4567의 자릿수는 4
423467의 자릿수는 6
457의 자릿수는 3

재귀 함수로 해결하기

가장 우아한 방법 중 하나는 재귀(Recursion)를 활용하는 것입니다. 숫자를 10으로 나눈 몫을 다시 함수에 전달하고, 호출될 때마다 카운트를 1씩 증가시키면 됩니다. 숫자가 0이 되면 지금까지 쌓인 카운트가 곧 자릿수입니다.

코드 예제

const num = 2353454;
const digits = (num, count = 0) => {
    if(num){
        return digits(Math.floor(num / 10), ++count);
    };
    return count;
};
console.log(digits(num));
console.log(digits(123456));
console.log(digits(53453));
console.log(digits(5334534534));

실행 결과

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

7
6
5
10

동작 원리 살펴보기

이 코드가 작동하는 과정을 단계별로 살펴보겠습니다.

1단계: digits(2353454)가 호출되면, Math.floor(2353454 / 10)235345와 카운트 1을 인자로 재귀 호출합니다.

2단계: 이 과정은 숫자가 0이 될 때까지 반복됩니다. 매번 마지막 자릿수가 잘려나가고 카운트가 하나씩 늘어납니다.

3단계: 숫자가 0이 되면 조건문 if(num)이 거짓이 되어 재귀가 종료되고, 누적된 카운트 값이 최종적으로 반환됩니다.

다른 접근 방법: 문자열 변환 활용

재귀 대신 숫자를 문자열로 변환하여 길이를 구하는 더 간결한 방법도 있습니다.

const digits = (num) => String(Math.abs(num)).length;
console.log(digits(2353454)); // 7
console.log(digits(-457)); // 3

Math.abs()를 사용하면 음수에서 마이너스 기호가 포함되는 문제를 방지할 수 있습니다. 다만 재귀 방식은 수학적 논리를 명확히 보여준다는 장점이 있어, 알고리즘 학습 목적에는 더 적합합니다.