알고리즘/백준

백준 1463: 1로 만들기 (Python)

sssbin 2022. 4. 5. 16:19

 

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

 

1463번: 1로 만들기

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

www.acmicpc.net

 

 

채점하는데 2분 걸려서 좀 쫄았다 ㅋ

인덱스 에러 방지를 위해 배열을 n의 수만큼 설정해줌.

 

n = int(input())

d = [0] * 1000001
d[2] = 1
d[3] = 1

for i in range(4, n+1):
    d[i] = d[i-1] + 1

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

    if i % 2 == 0:
        d[i] = min(d[i//2] + 1, d[i])

print(d[n])