728x90
반응형
#include <bits/stdc++.h>
using namespace std;
int n;
int d[30001]; //DP 테이블 초기화
int main() {
cin >> n;
d[0] = 0;
d[1] = 1;
//다이나믹 프로그래밍 진행(보텀업)
for(int i=2; i<n; i++){
//1을 빼는 경우
d[i] = d[i-1] + 1;
//2로 나누어 떨어지는 경우
if(i % 2 == 0) d[i] = min(d[i], d[i/2]+1);
//3으로 나누어 떨어지는 경우
if(i % 3 == 0) d[i] = min(d[i], d[i/3]+1);
//5로 나누어 떨어지는 경우
if(i % 5 == 0) d[i] = min(d[i], d[i/5]+1);
}
cout<<d[n]<<endl;
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[이코테/DP/C++] 금광 (0) | 2022.12.13 |
---|---|
[이코테/DP/C++] 효율적인 화폐구성 (0) | 2022.12.13 |
[이코테/DP/C++] 개미 전사 (0) | 2022.12.01 |
[ 백준/그리디/C++] 11399번 ATM (0) | 2022.09.29 |
[백준/그리디/C++] 10610번 30 (0) | 2022.09.22 |