#include <iostream> using namespace std; int DP[1000000+1]; int min(int a, int b) {return a>=b ? b:a;} int CNT(int N) { int temp =0; if (N==1) return 0; if (DP[N]>0) return DP[N]; //이게 왜 들어가는건지 이해가 안됨 // 이 줄이 없으면 시간이 초과->무한루프? 무슨 역할? DP[N]=CNT(N-1)+1; if (N%2==0) { temp=CNT(N/2)+1; DP[N]=min(temp,DP[N]);} if (N%3==0) { temp=CNT(N/3)+1, DP[N]=min(temp,DP[N]);}
return DP[N]; } int main() { int N=0; cin >> N; CNT(N); cout << DP[N];
return 0; } |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
20171005_9095_1,2,3 더하기 (0) | 2017.10.05 |
---|---|
20171004_11727_2xn 타일링 2 (0) | 2017.10.04 |
20171004_11726_2xn타일링 (0) | 2017.10.04 |
20171003_10818_최소, 최대 (0) | 2017.10.03 |
20171002_1924_2007년 (0) | 2017.10.02 |