숫자 뒤집기란 무엇인가?
숫자를 뒤집는다는 것은 해당 숫자의 자릿수를 역순으로 배치하여 새로운 숫자를 만드는 것을 의미합니다.
예를 들어, 입력된 숫자가 6529라면 프로그램은 9256을 출력해야 합니다.
다음은 C++로 작성한 숫자 뒤집기 프로그램입니다.
예제 코드
#include <iostream>
using namespace std;
int main() {
int num = 63972, rev = 0;
while(num > 0) {
rev = rev*10 + num%10;
num = num/10;
}
cout<<"Reverse of number is "<<rev;
return 0;
}실행 결과
Reverse of number is 27936
코드 동작 원리
위 프로그램에서 뒤집어야 할 숫자는 63972이며, 이 값은 변수 num에 저장됩니다. 뒤집힌 결과는 변수 rev에 저장되며, 초기값은 0입니다.
프로그램의 핵심 로직은 while 루프 안에 있습니다. 이 루프는 num이 0보다 큰 동안 계속 반복됩니다.
루프가 한 번 반복될 때마다 다음 두 가지 연산이 수행됩니다.
rev = rev*10 + num%10;— 기존의rev에 10을 곱해 자릿수를 한 칸 밀어낸 뒤,num을 10으로 나눈 나머지(일의 자리 숫자)를 더합니다.num = num/10;—num을 10으로 나누어 이미 처리한 일의 자리 숫자를 제거합니다.
이 핵심 로직은 다음 코드 조각에 잘 나타나 있습니다.
while(num > 0) {
rev = rev*10 + num%10;
num = num/10;
}단계별 실행 과정
입력값이 63972일 때 루프의 진행 과정을 단계별로 살펴보면 다음과 같습니다.
| 반복 | num | num % 10 | rev 계산식 | rev 결과 |
|---|---|---|---|---|
| 1 | 63972 | 2 | 0 × 10 + 2 | 2 |
| 2 | 6397 | 7 | 2 × 10 + 7 | 27 |
| 3 | 639 | 9 | 27 × 10 + 9 | 279 |
| 4 | 63 | 3 | 279 × 10 + 3 | 2793 |
| 5 | 6 | 6 | 2793 × 10 + 6 | 27936 |
모든 반복이 끝나면 rev에는 num의 자릿수가 완전히 뒤집힌 값인 27936이 저장되고, num은 0이 되어 루프가 종료됩니다. 마지막으로 cout을 통해 결과를 화면에 출력합니다.
cout<<"Reverse of number is "<<rev;