반응형
DP를 사용하여 가능한 최수 경우의 수를 Bottom-Up 방식으로 구해준다.
#include <iostream>
using namespace std;
int main() {
int N, DP[1000001];
cin >> N;
DP[1]=0;
for(int i=2; i<=N; i++) {
DP[i]=DP[i-1]+1;
if(!(i%3)) DP[i]=min(DP[i], DP[i/3]+1);
if(!(i%2)) DP[i]=min(DP[i], DP[i/2]+1);
}
cout << DP[N];
}
'PS' 카테고리의 다른 글
[PS] 백준 11053번 - 가장 긴 증가하는 부분 수열 (0) | 2023.05.21 |
---|---|
[PS] 백준 9095번 - 1, 2, 3 더하기 (0) | 2023.05.18 |
[PS] 백준 2629번 - 양팔저울 (0) | 2023.05.17 |
[PS] 백준 7569번 - 토마토 (0) | 2023.05.17 |
[PS] 백준 2468번 - 안전 영역 (0) | 2023.05.17 |