# [BOJ] 1463 1로 만들기 - 파이썬
# 문제 요약
정수에 사용할수있는 세가지 연산이 주어졌을때 정수 N 을 1로 만들기 위해 필요한 연산 횟수의 최솟값을 구하라
# 문제 풀이
- dp[i] : i 를 1로 만들기 위해 필요한 최소 연산 횟수
- 문제 자체가 점화식이다.
import sys
input = sys.stdin.readline
def main():
n = int(input())
dp = [sys.maxsize]*(n+5)
dp[1] = 0
dp[2] = 1
for i in range(3, n+1):
dp[i] = min(dp[i//3]+i%3,
dp[i//2]+i%2,
dp[i-1]) + 1
print(dp[n])
main()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Tags:
problemsolving
python