티스토리 뷰

알고리즘(C++)/백준 알고리즘

1110번 : 더하기 사이클

개발하는꼬물이 2017. 11. 19. 20:39

1. 문제 요약

   0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산이 가능하다.

   먼저, 주어진 수가 10보다 작다면 앞에 0을 붙여 2자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의

   가장 오른쪽 자리 숫자와 앞에서 구한 합의 가장 오른쪽 자리 숫자를 이어붙이면 새로운 수를 만들 수 있다. 

   예를 들어, 26이 주어지면, 2 + 6 = 8, 새로운 숫자는 68, 6 + 8 = 14, 새로운 숫자는 84, 8 + 4 = 12, 새로운 숫자는 42, 

   4 + 2 = 6, 새로운 숫자는 26이다. 위의 예는 4번만에 원래 숫자로 돌아올 수 있으므로, 26의 사이클 길이는 4이다.

   N이 주어졌을 때, N의 사이클 길이를 구하는 프로그램을 작성하시오.


2. 예제 입력

26


3. 예제 출력

4


4. 코드

#include <iostream>
using namespace std;

int main()
{
	int n, temp;
	int front, back;
	int count = 0;

	cin >> n; 

	temp = n;

	if (n < 0 || n > 99)
		return 0;
	
	while (1)
	{
		front = n / 10;
		back = n % 10;

		n = back * 10 + ((front + back) % 10);
		count++;

		if (n == temp)
		{
			cout << count << endl;
			break;
		}
	}
	
	return 0;
}


'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글

4673번 : 셀프 넘버  (0) 2018.04.17
15552번 : 빠른 A+B  (2) 2018.04.17
1546번 : 평균  (0) 2017.11.19
10871번 : X 보다 작은 수  (0) 2017.11.19
10817번 : 세 수  (0) 2017.11.19
댓글