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

JavaScript split() 메서드로 숫자의 모든 자릿수를 제곱하는 방법

문제 소개

이번 글에서는 JavaScript로 숫자 하나를 유일한 인수로 받아, 해당 숫자의 모든 자릿수를 각각 제곱한 뒤 그 결과를 이어 붙여 새로운 숫자를 반환하는 함수를 작성하는 방법을 알아보겠습니다.

문제 이해하기

예를 들어 입력 숫자가 다음과 같다면,

const num = 12349;

출력 결과는 다음과 같아야 합니다.

const output = 1491681;

그 이유는 각 자릿수를 제곱하면 1² = '1', 2² = '4', 3² = '9', 4² = '16', 9² = '81'이 되고, 이 값들을 문자열로 이어 붙이면 '1' + '4' + '9' + '16' + '81' = 1491681이 되기 때문입니다.

구현 아이디어

핵심 로직은 다음 세 단계로 정리할 수 있습니다.

  • 숫자를 문자열로 변환한 후 split('')을 사용해 각 자릿수로 이루어진 배열을 만듭니다.
  • 배열을 순회하면서 각 자릿수를 제곱합니다.
  • 제곱한 값을 문자열로 이어 붙인 뒤, 최종적으로 숫자로 변환하여 반환합니다.

예제 코드

const num = 12349;
const squareEvery = (num = 1) => {
    let res = '';
    const numStr = String(num);
    const numArr = numStr.split('');
    numArr.forEach(digit => {
        const square = (+digit) * (+digit);
        res += square;
    });
    return +res;
};
console.log(squareEvery(num));

실행 결과

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

1491681

더 간결한 대안: map()과 join() 활용

forEach와 문자열 누적 대신 map()join()을 조합하면 동일한 기능을 훨씬 간결하게 구현할 수 있습니다.

const squareEvery = (num = 1) =>
  +String(num)
    .split('')
    .map(d => (+d) ** 2)
    .join('');

console.log(squareEvery(12349)); // 1491681

이 방식은 중간 변수 없이 한 줄의 함수 표현식으로 처리할 수 있어 가독성이 좋고, 실무에서도 널리 사용되는 패턴입니다.