Algorithm/baekjoon

[파이썬]baekjoon 1463: 1로 만들기

갈잃자 2023. 1. 10. 19:07

https://www.acmicpc.net/problem/1463

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net


dp문제

 

import sys
input = sys.stdin.readline

N = int(input())

dp = [[0, 0] for _ in range(4)]

for i in range(2, N + 1):
    min_lst = []

    if not i % 3:
        dp[0].append(i // 3)
        min_lst.append(dp[3][i // 3])
    else:
        dp[0].append(-1)

    if not i % 2:
        dp[1].append(i // 2)
        min_lst.append(dp[3][i // 2])
    else:
        dp[1].append(-1)

    dp[2].append(i - 1)
    min_lst.append(dp[3][i - 1])

    dp[3].append(min(min_lst) + 1)

print(dp[3][N])