728x90
반응형
n = int(input())
data= [0]*3001
# 5, 3, 2 로 나누거나 1 빼기..
# 연산한 것이 무엇이 가장 작은지 판별
# +1 은 계산 횟수를 더해주기 위한 것.
# bottom up 방식이므로.. i//k < i 를 만족해서 다음처럼 표현 가능..
for i in range(2,n+1):
d[i] = d[i-1]+1
if i %2 == 0:
d[i] = min(d[i], d[i//2]+1)
if i %3 == 0:
d[i] = min(d[i], d[i//3]+1)
if i %5 == 0:
d[i] = min(d[i], d[i//5]+1)
print(d[n])
728x90
반응형
'알고리즘 > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
08-4. 바닥공사 (0) | 2020.09.10 |
---|---|
08-3. 개미전사 (0) | 2020.09.10 |
08-피보나치 수열 (0) | 2020.09.10 |
07-3. 떡볶이 떡 만들기 (0) | 2020.09.10 |
07-2. 부품찾기 (0) | 2020.09.10 |