애드혹 알고리즘 : 정형화된 알고리즘이 아니라 특정 상황만을 해결하기 위한 알고리즘.
처음 풀이를 할 때 재귀함수를 통해 답을 얻으려 했지만 재귀함수 종료조건을 구할 수 없었다. 그래서 임의의 수를 계산했을 때 무조건 FA의 결과가 나오는 걸 확인했고, 모든 수에 대해 결국은 FA가 나오는 식으로 풀이했다.
#include <iostream>
#include <string>
using namespace std;
string F(string x)
{
int front_of_x = x[0] - '0';
int length_of_x = x.length();
string next = to_string(front_of_x * length_of_x);
//cout << x << " " << next << "\n";
//NFA가 발생하는 경우가 있나?
/*if (x == next)
{
return "FA";
}
else
{
return F(next);
}*/
return "FA";
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string x;
cin >> x;
cout << F(x) << "\n";
return 0;
}