숫자의 자릿수를 뒤집는 프로그램은 각 자릿수의 위치를 서로 교환하여 원래 순서를 거꾸로 만드는 작업을 수행합니다.
예를 들어 abcde라는 다섯 자리 숫자가 있다면, 이를 뒤집으면 edcba가 됩니다.
다음 예시를 통해 문제를 좀 더 쉽게 이해해 보겠습니다.
입력
n = 786521
출력
125687
숫자의 자릿수를 뒤집으려면 일의 자리부터 한 자릿수씩 차례로 가져와서 결과를 저장할 변수(reverseNumber)에 추가합니다. 그런 다음 원래 숫자를 10으로 나누고, reverseNumber에는 10을 곱합니다. 이 과정을 원래 숫자가 0이 될 때까지 반복하면 자릿수가 완전히 뒤집힌 숫자를 얻을 수 있습니다.
이러한 반복 작업은 반복문(iteration)과 재귀(recursion), 두 가지 방법으로 구현할 수 있습니다. 아래에서 두 가지 방식을 모두 보여주는 프로그램을 살펴보겠습니다.
예제
방법 1: 반복문 접근법
#include <iostream>
using namespace std;
int reversDigitsIt(int n) {
int reverseNumber = 0;
while(n > 0){
reverseNumber = reverseNumber*10 + n%10;
n /= 10;
}
return reverseNumber;
}
int main() {
int n = 4562;
cout<<"The number is : "<<n<<endl;
cout<<"Reverse of number is "<<reversDigitsIt(n);
return 0;
}반복문 방식에서는 while 문을 사용해 n % 10으로 마지막 자릿수를 하나씩 추출하고, reverseNumber에 10을 곱한 뒤 더하여 자릿수를 왼쪽으로 밀어냅니다. 이후 n을 10으로 나누어 다음 자릿수를 처리하고, n이 0이 되면 반복을 종료합니다.
출력
The number is : 4562 Reverse of number is 2654
예제
방법 2: 재귀 접근법
#include <iostream>
using namespace std;
int reverseNumber = 0;
int numPos = 1;
void reversDigitsRec(int n) {
if(n > 0){
reversDigitsRec(n/10);
reverseNumber += (n%10)*numPos;
numPos *= 10;
}
}
int main() {
int n = 4562;
cout<<"The number is : "<<n<<endl;
reversDigitsRec(n);
cout<<"Reverse of number is "<<reverseNumber;
return 0;
}재귀 방식에서는 먼저 n / 10으로 자신을 다시 호출하여 가장 높은 자릿수부터 처리되도록 한 뒤, 호출이 되돌아오면서 각 자릿수에 자리값(numPos)을 곱해 reverseNumber에 더합니다. 이 과정에서 전역 변수 reverseNumber와 numPos를 사용하며, 재귀 호출이 모두 끝나면 자릿수가 뒤집힌 최종 결과가 완성됩니다.
출력
The number is : 4562 Reverse of number is 2654