본문 바로가기
C C++/C C++ 유용한 알고리즘 기법

[C/C++] 정수 자릿수 뒤집기

by Go! Jake 2022. 7. 17.

이번에는 입력받은 정수의 자릿수를 뒤집는 것을 알아보도록 하려고 한다. 우선 it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비라는 강의에서 알게 된 내용임.

 

알고리즘 문제 풀 때 정수 자릿수를 바꾸라는 문제가 있는 데, 종종 수학적인 느낌으로 쉽게 풀 수 있다. 지금까지는 문자열에 각 자릿수를 입력하고 이를 스위칭하는 방식으로 문제를 풀어 왔는 데, 너무 비효율적임.

정수 자릿수 뒤집기

#include <iostream>

int main()
{
	int a=12345;
	int res=0;
	int tmp=0;
	while (a>0){
		tmp=a%10;
		res=res*10+tmp;
		a=a/10;
	}
	printf("%d", res);
	return 0;
}

1) 입력받은 a를 a%10을 통해 일의 자릿수만 tmp에 보관한다.

2) res=res*10+tmp;를 통해 이전 값에 10을 곱해 자릿수를 하나씩 올린다.

3) a/10을 했을 때 0이 될 때까지 나눈다.

 

이 경우 res는 한자리씩 올라가기 때문에 최종 값은, 맨 처음에 입력받은 일의 자릿수가 최고 높은 자릿수에 가 있게 된다.

댓글