알고리즘/[문제풀이] 백준

[백준] DP - 1로 만들기

로그뉴 2020. 10. 3. 17:18

한동안 코테 스터디 하느라 블로그에 코딩 공부 글을 올리지 못했다.. (?모순)

코테 스터디 내용은 차차 올릴 예정이다.

이제 스터디도 끝나서 다시 혼자 공부해야 하는데 열심히 문제풀이 올리면서 꾸준히 공부해야지. :)

 

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

 

1463번: 1로 만들기

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

www.acmicpc.net

점화식 : d[a] = min ( d[a // 3] +1, d[a // 2] + 1 , d[a - 1] + 1 )

시간 복잡도 : O(N)

a = int(input())

d = [0] * (a + 1)
for x in range(2, a + 1):
    d[x] = d[x - 1] + 1
    if x % 2 == 0:
        d[x] = min(d[x], d[x // 2] + 1)
    if x % 3 == 0:
        d[x] = min(d[x], d[x // 3] + 1)

print(d[a])