백준 1463 c++
#include <iostream>
using namespace std;
int input(int lower, int upper)
{
//cout << "input()" << endl;
int A;
while (1)
{
cin >> A;
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
int find_result(int X)
{
//cout << "find_result()\n";
int count;
int* dp = new int[X + 1];
int i;
dp[0] = 0;
dp[1] = 0;
//dp[2] = 1;
//dp[3] = 1;
for (i = 2; i <= X; i++)
{
dp[i] = dp[i - 1] + 1;
if (i % 2 == 0)
{
dp[i] = min(dp[i], dp[i/2]+1);
}
else
{
;
}
if (i % 3 == 0)
{
dp[i] = min(dp[i], dp[i /3] + 1);
}
else
{
;
}
}
count = dp[X];
delete[] dp;
return count;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int X;
X = input(1, 1000000);
cout << find_result(X) << "\n";
return 0;
}