문제의 소재
0보다 크거나 같고, 100보다 작은 정수 N이 입력되면, N의 일의 자리수와 N의 각 자리수의 합의 일의 자리수를 붙여 새로운 수를 만들 수 있다. 이러한 과정을 반복했을 때, 다시 N이 되는 데 걸리는 횟수를 출력하는 문제이다.
해답
정수 N을 변환한 수는 N%10*10+(N/10+N%10)%10으로 나타낼 수 있다. 최초 1회의 실행이 필요하기 때문에 do-while문을 이용하여 두 수가 다른동안 변환을 하고 횟수를 측정하였다.
// BOJ_1110.cpp
#include <iostream>
using namespace std;
int main()
{
int N, M, i;
cin>>N;
i = 0, M = N;
do
{
M = M%10*10+(M/10+M%10)%10;
i++;
} while (M != N);
cout<<i<<endl;
return 0;
}
반응형
댓글