본문 바로가기
알고리즘 풀이/다이나믹 프로그래밍

[백준/파이썬] 1463번: 1로 만들기

by developer jini 2023. 1. 10.
728x90

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

 

1463번: 1로 만들기

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

www.acmicpc.net

import sys

x = int(sys.stdin.readline())

# dp 테이블
d = [0 for _ in range(x+1)]

for i in range(2, x + 1):
    # 1을 빼는경우
    d[i] = d[i - 1] + 1
    # 1을 뺄때와 3과 2로 나눌때 횟의 최솟값을 d[i]에 담는다
    if i % 2 == 0:
        d[i] = min(d[i], d[i // 2] + 1)
    if i % 3 == 0:
        d[i] = min(d[i], d[i // 3] + 1)
#결과 출력
print(d[x])

 

728x90

댓글