Coding Test/BAEKJOON
1463
210B
2023. 2. 22. 17:26
import sys
input = sys.stdin.readline
n = int(input())
cnt = 0
while n > 1:
if n % 3 == 0:
n = n/3
elif n % 3 == 1:
n -= 1
else:
n = n/2
cnt += 1
print(cnt)
그냥 논리 세워서 풀려고 했는데
틀렸다고 함
dp 구현해야 하나 본데 너무 오랜만이라 생각이 나지 않아서 책 뒤적거려봄
import sys
input = sys.stdin.readline
n = int(input())
dp = [0 for _ in range(n+1)]
for i in range(2, n+1):
dp[i] = dp[i-1] + 1
if i % 3 == 0:
dp[i] = min(dp[i], dp[i//3]+1)
if i % 2 == 0:
dp[i] = min(dp[i], dp[i//2]+1)
print(dp[n])
이렇게 해결했다
#동적계획법