1로 만들기
last update: 2021.09.08.WED
1463 1로 만들기, Silver 3
Memory 115244KB, Time 800ms
- 메모리 및 시간 면에서 개선이 필요하다.
from collections import defaultdict
n = int(input())
memo = defaultdict(int)
def division(n):
memo[1] = 0
memo[2] = 1
memo[3] = 1
for i in range(4, n+1):
if i not in memo:
if i % 3 == 0 and i % 2 !=0:
memo[i] = min(memo[i//3], memo[i-1]) + 1
elif i % 3 == 0 and i % 2 == 0:
memo[i] = min(memo[i//3], memo[i//2], memo[i-1]) + 1
elif i % 3 != 0 and i % 2 == 0:
memo[i] = min(memo[i//2], memo[i-1]) + 1
else:
memo[i] = memo[i-1]+1
return memo[n]
print(division(n))