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

JavaScript에서 reverse() 메서드 없이 숫자를 뒤집는 방법

배열이나 문자열로 변환하지 않고 숫자를 입력받아 그 숫자를 뒤집어 반환하는 JavaScript 함수를 작성해야 합니다.
즉, 내장된 reverse() 메서드나 Array, String 객체에 의존하지 않고 순수한 수학적 연산만으로 문제를 해결해야 합니다.

가장 효율적인 접근 방식은 재귀(recursion)와 나머지 연산자(%)를 활용하는 것입니다. 숫자의 마지막 자릿수를 하나씩 추출해 결과값에 누적하고, 남은 숫자로 재귀 호출을 반복하다가 숫자가 0이 되면 누적된 결과를 반환합니다.

예제

const num = 234567;
const reverseNumber = (num, res = 0) => {
    if(num){
        return reverseNumber(Math.floor(num / 10), (res*10)+(num % 10));
    };
    return res;
};
console.log(reverseNumber(num));
console.log(reverseNumber(53536));
console.log(reverseNumber(76576));

출력

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

765432
63535
67567

동작 원리

이 함수가 어떻게 작동하는지 단계별로 살펴보겠습니다.

  • num % 10: 숫자의 마지막 자릿수를 추출합니다.
  • (res * 10) + (num % 10): 기존 결과값을 한 자릿수 왼쪽으로 밀고 새로 추출한 자릿수를 추가합니다.
  • Math.floor(num / 10): 마지막 자릿수를 제거한 나머지 부분을 구해 다음 재귀 호출에 전달합니다.
  • num이 0이 되면 재귀 호출을 종료하고 지금까지 누적된 res 값을 반환합니다.

예를 들어 234567을 입력하면 첫 번째 호출에서 res = 0 × 10 + 7 = 7이 되고, 이후 6, 5, 4, 3, 2가 차례대로 추가되어 최종적으로 765432가 반환됩니다. 이 방식은 문자열 변환이 전혀 필요 없으므로 성능 면에서도 매우 효율적입니다.