Algorithm/boj

[파이썬] 12852 1로 만들기 2

takeU 2022. 5. 9. 20:18
반응형
n = int(input())
dp = [[0, []] for _ in range(n + 1)]

for i in range(2, n + 1):
    dp[i][0] = dp[i - 1][0] + 1
    dp[i][1] = dp[i - 1][1] + [i]
    if i % 3 == 0 and dp[i // 3][0] + 1 < dp[i][0]:
        dp[i][0] = dp[i // 3][0] + 1
        dp[i][1] = dp[i // 3][1] + [i]
    if i % 2 == 0 and dp[i // 2][0] + 1 < dp[i][0]:
        dp[i][0] = dp[i // 2][0] + 1
        dp[i][1] = dp[i // 2][1] + [i]

print(dp[-1][0])
print(*(dp[-1][1][::-1] + [1]))

dp