(cpp)Baekjoon 1463번 문제 ‘1로 만들기’ - 다이나믹프로그래밍

Baekjoon 1463번 문제 ‘1로 만들기’ - 다이나믹프로그래밍


문제

문제풀이

image

코드

#include <iostream>
#include <algorithm>
using namespace std;

int dp[1000001];
int n;
int main() {
	cin >> n;
	dp[1] = 0;
	for (int i = 2; i <= n; i++) {
		dp[i] = dp[i - 1] + 1;
		if (i % 3 == 0) {
			dp[i] = min(dp[i],dp[i / 3] + 1);
		}
		if (i % 2 == 0) {
			dp[i] = min(dp[i], dp[i / 2] + 1);
		}
	}

	cout << dp[n];

	return 0;
}
  • 지금까지 푼 문제 중에 젤 많이 틀림