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;
}