Hikenny25
1463 - 1로 만들기 본문
https://www.acmicpc.net/problem/1463
- Dynamic Programming
import sys
input = sys.stdin.readline
n = int(input())
dp = [0] * (n+4)
dp[2] = dp[3] = 1
for i in range(4, n+1):
if i % 3 == 0 and i % 2 == 0:
dp[i] = min(dp[i-1], dp[i//2], dp[i//3]) + 1
elif i % 3 == 0:
dp[i] = min(dp[i-1], dp[i//3]) + 1
elif i % 2 == 0:
dp[i] = min(dp[i-1], dp[i//2]) + 1
else:
dp[i] = dp[i-1] + 1
print(dp[n])
감격스럽다
새로운 dp 유형이었는데 빠르게 풀어냈다 ㅎㅎ
if~elif~else 문으로 점화식을 만든건 좀 안 이쁘지만..
어쨌든 정답!!!!
'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글
2606 - 바이러스 (0) | 2022.10.25 |
---|---|
2579 - 계단 오르기 (0) | 2022.10.25 |
17219 - 비밀번호 찾기 (1) | 2022.10.25 |
11399 - ATM (0) | 2022.10.25 |
11047 - 동전 0 (0) | 2022.10.25 |
Comments