Algorithm

[백준] 알고리즘 C++ 1463번 - 1로 만들기 문제

낭강 2020. 11. 7. 13:04

다이나믹 프로그래밍 DP 를 이용하여 풀 수 있습니다.

dp[1] = 0 

dp[2] = 1 // 2로 나누어 1로 만들어짐

dp[3] = 1 // 3으로 나누어 1로 만들어짐

dp[4] = 2 // 2로 나누고 -1 총 2번

dp[5] = 3 // 1빼고 dp[4] 의 값 총 더해서 3번

즉 dp[n]=dp[n/2]+1 , dp[n/3] +1, dp[n-1] +1 이 셋중 최소 값을 찾는 것이 최단 수 이다.