728x90
#1463 1로 만들기
import sys
import math
input = sys.stdin.readline
N = int(input())
#0,1,2,3으로부터 최단거리로 1을 만드는 방법#
dp = [0,0,1,1]
for x in range (4,N+1):
if x % 2 != 0 and x % 3 != 0:
y = dp[x-1] + 1
dp.append(y)
elif x % 2 != 0 and x % 3 == 0:
y = min(dp[x//3],dp[x-1]) + 1
dp.append(y)
elif x % 2 == 0 and x % 3 != 0:
y = min(dp[x//2],dp[x-1]) + 1
dp.append(y)
else:
y = min(dp[x//2],dp[x//3],dp[x-1]) + 1
dp.append(y)
print(dp[N])
귀여운 dp 문제였나봅니다.
'코딩' 카테고리의 다른 글
[BOJ] 백준 1684 같은 나머지 Python (0) | 2023.10.27 |
---|---|
[BOJ] 백준 1016 제곱ㄴㄴ수 Python (0) | 2023.10.27 |
[BOJ] 백준 1790 수 이어 쓰기2 Python (0) | 2023.10.27 |
[BOJ] 백준 2877 4와 7 Python (0) | 2023.10.27 |
[BOJ] 백준 1059 좋은 구간 Python (0) | 2023.10.27 |