n = int(input())
d = [0] * (n+1)
# 이 문제 자체가 1로만들기라서 애초에 1은 연산이 0이됨
# 따라서 2번째 부터 시작해줘야 함
for i in range(2, n+1):
# 1을 뻬고 시작하는 이유 : 다음에 계산할 나누기가 1을 뺀 값보다 작거나 큼에 따라 어차피 교체되기 때문
d[i] = d[i-1] + 1
if i % 3 == 0:
d[i] = min(d[i//3]+1, d[i])
if i % 2 == 0:
d[i] = min(d[i//2]+1, d[i])
print(d[n])
답이 틀렸다고 나와서 뭔가 했더니 =자리에 ==을 써줘서 그랬다..
정신 차리자!
'Algorithm_PYTHON' 카테고리의 다른 글
| [백준_파이썬]1259_팰린드롬수 (0) | 2021.09.11 |
|---|---|
| [백준_파이썬]2570번_계단 오르기 (0) | 2021.08.28 |
| [백준_파이썬]2839번_설탕배달 (0) | 2021.08.28 |
| [알고리즘] CH08 다이나믹 프로그래밍(DP, 동적계획법) (0) | 2021.08.27 |
| [백준_파이썬]7526번_나이트의 이동 (0) | 2021.08.26 |