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

배열·문자열 메서드 없이 JavaScript에서 정수의 자릿수를 반전시키는 방법

숫자의 자릿수를 거꾸로 뒤집은 값을 반환하는 Number.prototype.reverse() 함수를 작성해 보겠습니다. 이 문제는 숫자를 배열로 변환하거나 문자열 메서드를 사용하지 않고, 오직 수학적 연산만으로 해결하는 것이 핵심입니다.

동작 예시

234.reverse() = 432;
6564.reverse() = 4656;

이 기능은 재귀(recursion) 방식으로 깔끔하게 구현할 수 있습니다. 매 단계마다 숫자를 10으로 나눈 몫과 나머지를 이용해 마지막 자릿수를 하나씩 분리하고, 이를 결과값에 누적하는 원리입니다. 음수 여부는 별도의 플래그로 전달하여 최종 결과에 부호를 반영합니다.

구현 코드

const reverse = function(temp = Math.abs(this), reversed = 0, isNegative = this < 0){
    if(temp){
        return reverse(Math.floor(temp/10), (reversed*10)+temp%10, isNegative);
    };
    return !isNegative ? reversed : reversed*-1;
};
Number.prototype.reverse = reverse;
const n = -12763;
const num = 43435;
console.log(num.reverse());
console.log(n.reverse());

코드 설명

  • temp — 아직 처리하지 않은 남은 자릿수를 나타내며, 기본값은 숫자의 절댓값입니다.
  • reversed — 지금까지 누적된 반전 결과값입니다. 매번 10을 곱한 뒤 새 자릿수를 더하는 방식으로 자릿수가 이어집니다.
  • isNegative — 원래 숫자가 음수였는지 저장하는 플래그로, 재귀가 끝난 후 결과에 음수 부호를 붙이는 데 사용됩니다.

재귀 호출은 temp가 0이 되는 시점, 즉 모든 자릿수를 처리했을 때 종료되며, 그 시점의 reversed 값이 최종 결과가 됩니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

53434
-36721