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

JavaScript로 숫자를 뒤집어 자릿수 배열로 변환하는 방법

문제 소개

이번 글에서는 하나의 숫자를 입력받아 그 숫자를 먼저 뒤집은 다음, 뒤집힌 숫자를 각 자릿수로 분리하여 배열 형태로 반환하는 JavaScript 함수를 작성해 보겠습니다.

예를 들어 입력값과 기대되는 출력값은 다음과 같습니다.

입력

const num = 1234567;

출력

const output = [7, 6, 5, 4, 3, 2, 1];

입력받은 숫자 1234567을 뒤집으면 7654321이 되고, 이를 각 자릿수별로 분리하면 위와 같은 배열이 만들어집니다.

해결 방법

이 문제는 다음 세 단계로 해결할 수 있습니다.

1. 숫자를 문자열로 변환 — String() 함수를 사용해 숫자를 문자열로 바꿉니다.
2. 문자열을 배열로 분리 후 뒤집기 — split('')으로 한 글자씩 나눈 뒤 reverse() 메서드로 순서를 반전시킵니다.
3. 각 요소를 다시 숫자로 변환 — map() 메서드와 Number()를 사용해 문자열 요소들을 숫자로 바꿔줍니다.

예제 코드

위 로직을 구현한 전체 코드는 다음과 같습니다.

const num = 1234567;
const reverseAndSplit = (num = 1) => {
    const numStr = String(num);
    const arr = numStr.split('');
    arr.reverse();
    return arr.map(el => {
        return Number(el);
    });
};
console.log(reverseAndSplit(num));

실행 결과

[7, 6, 5, 4, 3, 2, 1]

코드 설명

코드의 동작 흐름을 단계별로 살펴보면 다음과 같습니다.

먼저 String(num)을 통해 숫자 1234567이 문자열 "1234567"로 변환됩니다. 이후 split('')을 호출하면 문자열이 ['1', '2', '3', '4', '5', '6', '7']이라는 문자 배열로 분리됩니다. 여기에 reverse()를 적용하면 배열의 순서가 반전되어 ['7', '6', '5', '4', '3', '2', '1']이 됩니다. 마지막으로 map(el => Number(el))을 사용해 각 문자열 요소를 숫자 타입으로 변환한 최종 배열을 반환합니다.

참고로 위 코드를 더 간결하게 표현하고 싶다면 메서드 체이닝을 활용해 다음과 같이 한 줄로 작성할 수도 있습니다.

const reverseAndSplit = (num = 1) =>
    String(num).split('').reverse().map(Number);

이처럼 JavaScript의 내장 메서드들을 조합하면 별도의 반복문 없이도 간단하고 가독성 좋게 문제를 해결할 수 있습니다.