<!-- HTML generated using hilite.me -->

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21#include<stdio.h> int dp[1001]; inline int min(int a, int b){ return a<b?a:b; } int main() { int s; scanf("%d", &s); for(int i=2; i<=s; ++i) dp[i] = i; dp[1] = 0; for(int i=2; i<=s; ++i){ for(int j=2; j<i; ++j) dp[i] = min(dp[i], dp[j]+1+(i%j==0?i/j-1:i/j+(i/j+1)*j-i)); if(i%2==0) dp[i] = min(dp[i], dp[i/2]+2); else dp[i] = min(dp[i], dp[i/2+1]+3); } printf("%d\n", dp[s]); return 0; }


억지로 맞추느라 오래걸림 


점화식 한방에 못세우겠다 진짜


근데 nlogn은 어케함?