이번에는 입력받은 정수의 자릿수를 뒤집는 것을 알아보도록 하려고 한다. 우선 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는 한자리씩 올라가기 때문에 최종 값은, 맨 처음에 입력받은 일의 자릿수가 최고 높은 자릿수에 가 있게 된다.
'C C++ > C C++ 유용한 알고리즘 기법' 카테고리의 다른 글
[C/C++] 팩토리얼 구현하기 (재귀함수의 이해) (0) | 2022.09.29 |
---|---|
[C/C++] 맵(좌표) 동서남북 알고리즘 문제 고찰 (0) | 2022.08.08 |
[C/C++] 정수 자릿수의 합 구하기 (0) | 2022.07.17 |
[C/C++] 거듭제곱 함수 만들기 (0) | 2022.07.16 |
[C/C++] 정수 자릿수 세기 (0) | 2022.07.16 |
댓글