[Python] 백준 1463: 1로 만들기
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
DP 개념 연습하기 괜찮은 문제. 다른 DP 문제와 마찬가지로 점화식을 만들어 보았다.
DP 문제는 개인적으로 풀이가 너무 짧아서 허탈할 때가 있다... 익숙해지기 전까지 규칙 찾고 그 부분을 토대로 메모리에 저장하는 것을 목표로 하는 중!
N = int(input())
lst = [0]*(N+1)
for i in range(2,N+1):
if i % 6 == 0: #6의 배수인 경우
lst[i] = min(lst[i//2], lst[i//3], lst[i-1])+1
elif i % 3 == 0: #3의 배수인 경우
lst[i] = min(lst[i//3], lst[i-1])+1
elif i % 2 == 0:
lst[i] = min(lst[i//2], lst[i-1])+1
else:
lst[i] = lst[i-1] + 1
print(lst[N])

'알고리즘 > 백준' 카테고리의 다른 글
| [Python] 백준 2636: 치즈 (0) | 2023.04.18 |
|---|---|
| [Python] 백준 1788: 피보나치 수의 확장 (0) | 2023.04.17 |
| [Python] 백준 1932: 정수 삼각형 (0) | 2023.04.13 |
| [Python] 백준 14499: 주사위 굴리기 (0) | 2023.04.06 |
| [Python] 백준 1344: 축구 (0) | 2023.04.05 |
TAGS.
