본문 바로가기
7장 기타/백준 BOJ

[백준/BOJ] 1110번 더하기 사이클

2021. 5. 4.
 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

문제의 소재

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;
}
반응형

댓글