PS/백준

1463번 - 1로 만들기

ForteQook 2022. 10. 22. 10:58

문제

1463번: 1로 만들기 (acmicpc.net)

 

1463번: 1로 만들기

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

www.acmicpc.net

풀이

예를 들어 X가 6인 경우, dp[6] = min(dp[5],dp[3],dp[2]) + 1이 될 것이다. 즉 X가 2로 나눠지는 경우와 3으로 나눠지는 경우에 대해서 점화식을 세우면 된다.

N = int(input())

dp = [0]*(10**6+1)
dp[1],dp[2],dp[3] = 0,1,1
for i in range(4,N+1):
    dp[i] = dp[i-1] + 1
    if i%2 == 0:
        dp[i] = min(dp[i], dp[i//2]+1)
    if i%3 == 0:
        dp[i] = min(dp[i], dp[i//3]+1)

print(dp[N])

'PS > 백준' 카테고리의 다른 글

2156번 - 포도주 시식  (0) 2022.10.22
10844번 - 쉬운 계단 수  (1) 2022.10.22
2579번 - 계단 오르기  (0) 2022.10.21
1149번 - RGB거리  (0) 2022.10.21
1912번 - 연속합  (0) 2022.10.21