공부/백준

백준 1110번: 더하기 사이클(C++)

상연 2020. 12. 1. 15:46

목차

    www.acmicpc.net/problem/1110

     

    1110번: 더하기 사이클

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

    www.acmicpc.net

    코드

    #include <iostream>
    using namespace std;
    
    int main() {
    	int n; // 주어진 수
    	cin >> n;
    	
    	int left, right; // 왼쪽 수, 오른쪽 수
    	int cycle = 0; // 사이클 수
    	int num_new = n; // 계산된 수
    	
    	
    	do{
    		left = num_new / 10;
    		right = num_new % 10;
    		num_new = right * 10 + ((left + right) % 10);
    		cycle += 1;
    	}while(n != num_new);
    	
    	cout << cycle;
    	
    }

     

    풀이

    두 자리 수인 N이 주어집니다.

    그 수의 왼쪽 수(10의 자리수) 와 오른쪽 수(1의 자리수)를 구해야 문제를 풀 수 있는데요.

    구하는 방법은 간단합니다.

    왼쪽 수(10의 자리)는 N을 10으로 나눈 몫입니다.

    오른쪽 수(1의 자리)는 N을 10으로 나눈 나머지입니다.

     

    이를 사용해서 초기에 주어진 수와 계산되어 새로 나온 수가 동일해질때까지 반복문을 사용해서 계산하면 됩니다.