Algorithm/Cases-BOJ

더하기 사이클

Xi_kor 2021. 4. 14. 19:05

큐를 활용해서 진행했다. 제일 처음에 들어온 수를 ch 배열에 1로 선언해주고 계속 반복하다가 해당 수가 ch 배열에 1로 들어와있다면 반복문을 빠져나갔다. 

#include <cstring>
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int ch[110];

int main()
{
	int n;
	cin >> n;
	queue <int> q;
	q.push(n);
	ch[n] = 1;
	int cnt = 0;

	while (!q.empty()) {
		int x = q.front();
		q.pop();

		if (ch[x]==1&&cnt>0) break;

		int existnum;
		int newnum = 0;

		if (x < 10)	existnum = x;
		else existnum = x % 10;
		int temp = x;
		while (temp > 0) {
			newnum += temp % 10;
			temp = temp / 10;
		}
		q.push(existnum * 10 + newnum%10);
		cnt++;
	}
	cout << cnt;
	return 0;
}