티스토리 뷰

#연산 재활용 -> dp

X = int(input())

dp = [0] * (X+1) 
# 기본적인 dp 세팅

for i in range(2,X+1):
    dp[i] = dp[i-1] +1
    #그리디로 푼다면 짝수, 홀수로 바로 나눌 수 있지만 
    #이 문제의 경우 경우의 수를 고려하는 최솟값임
    
    if i % 2 == 0:
        dp[i] = min(dp[i], dp[i//2]+1)
    # 

    if i % 3 == 0:
        dp[i] = min(dp[i], dp[i//3]+1)
    # 

print(dp[X])

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함