https://www.acmicpc.net/problem/1463


왜자꾸 틀리다고 나오는건야?


좆같네 진짜


#include <iostream>

#include <algorithm>

#include <string.h>

int memo[1000001];

int input;

int Recursion(int val, int count)

{

if (val <= 0) return ++count;

if (val == 1) return 0;

if (memo[val] != -1) return memo[val];

int ans = memo[val] = input;

if (val % 3 == 0)

memo[val] = std::min(memo[val], Recursion(val / 3, count + 1)) + 1;

if (val % 2 == 0)

memo[val] = std::min(memo[val], Recursion(val / 2, count + 1)) + 1;

ans = Recursion(val - 1, count + 1) + 1;

if (memo[val] > ans)

memo[val] = ans;

return memo[val];

}

int main()

{

std::ios_base::sync_with_stdio(false);

std::cin >> input;

memset(memo, -1, sizeof(memo));

memo[2] = memo[3] = 1;

printf("%d\n", Recursion(input, 1));

return 0;

}