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

JavaScript로 각 자릿수가 바로 앞 자릿수로 나누어 떨어지는지 확인하는 방법

문제 소개

이번 글에서는 JavaScript 함수를 작성하여 하나의 숫자를 입력받고, 각 자릿수가 바로 왼쪽에 있는 자릿수로 나누어 떨어지는지 검사한 뒤, 그 결과를 불리언(Boolean) 배열로 반환하는 방법을 알아보겠습니다.

첫 번째 자릿수 앞에는 어떤 숫자도 존재하지 않기 때문에, 결과 배열의 첫 번째 요소는 항상 false가 됩니다.

해결 접근 방식

구현 과정은 다음과 같습니다.

1. 입력받은 숫자를 toString() 메서드로 문자열로 변환합니다.
2. 결과 배열을 첫 번째 값 false로 초기화합니다.
3. 두 번째 자릿수부터 마지막 자릿수까지 반복하면서, 현재 자릿수를 이전 자릿수로 나눈 나머지가 0인지 확인합니다.
4. 나누어 떨어지면 true, 그렇지 않으면 false를 배열에 추가합니다.

예제 코드

다음은 전체 구현 코드입니다.

const num = 73312;
const divisibleByPrevious = (n = 1) => {
    const str = n.toString();
    const arr = [false];
    for(let i = 1; i < str.length; ++i){
       if(str[i] % str[i-1] === 0){
          arr.push(true);
       }else{
          arr.push(false);
       };
    };
    return arr;
};
console.log(divisibleByPrevious(num));

실행 결과

[ false, false, true, false, true ]

결과 해석

입력값 73312의 경우 결과가 다음과 같이 나옵니다.

  • 첫 번째 자릿수 7: 앞의 숫자가 없으므로 false
  • 두 번째 자릿수 3: 3 ÷ 7은 나누어 떨어지지 않으므로 false
  • 세 번째 자릿수 3: 3 ÷ 3으로 나누어 떨어지므로 true
  • 네 번째 자릿수 1: 1 ÷ 3은 나누어 떨어지지 않으므로 false
  • 다섯 번째 자릿수 2: 2 ÷ 1로 나누어 떨어지므로 true

이처럼 문자열 변환과 모듈로(%) 연산만 활용하면 별도의 복잡한 수학 처리 없이도 각 자릿수 간의 나눗셈 가능 여부를 손쉽게 판별할 수 있습니다. 시간 복잡도는 숫자의 자릿수에 비례하는 O(n)으로 매우 효율적입니다.