728x90
반응형
https://www.acmicpc.net/problem/1463
탑다운, 바텀업 두가지 방식으로 풀긴 했는데, 탑다운 방식으로 하니까 시간초과가 났다.
max_num = 10**20
def solution(n,count):
global max_num
if n == 1:
max_num = min(max_num,count)
if n % 3 == 0:
solution(n//3,count+1)
if n % 2 == 0:
solution(n // 2, count +1)
if n > 1:
solution(n-1,count+1)
return max_num
def solution2(n):
dp = [0] * (n + 1)
for i in range(2,n+1):
dp[i] = dp[i-1] + 1
if i % 2 == 0:
dp[i] = min(dp[i],dp[i//2]+1)
if i % 3 == 0:
dp[i] = min(dp[i],dp[i//3]+1)
return dp[n]
input = int(input())
print(solution(input,0))
print(solution2(input))
728x90
반응형
'알고리즘 > DP' 카테고리의 다른 글
[백준] 1309번 동물원 #Java (0) | 2022.05.30 |
---|---|
[백준] 2775번 부녀회장이 될테야 #Java #DP (0) | 2022.05.07 |
[백준] 11050번 이항 계수 1 #Java (0) | 2022.05.07 |
[백준] 2xN 타일링 (0) | 2021.11.17 |
[알고리즘] DP 공부해보기 (0) | 2021.11.10 |