728x90
https://www.acmicpc.net/problem/22869
징검다리 건너기 (large) 문제와 거의 동일하게 풀었다.
다만 마지막에 dp[-1] 칸이 값이 k보다 작거나 같은지 확인해주면 된다.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
array = list(map(int, input().split()))
INF = int(1e9)
dp = [INF]*n # i 번째까지 올때 드는 최대힘
dp[0] = 0
for i in range(1, n):
for j in range(0, i):
cost = max((i-j) * (1+abs(array[i]-array[j])), dp[j]) # i 번째 돌에서 j 번째돌로 이동할 때의 비용
if cost <= k:
dp[i] = min(cost, dp[i])
if dp[-1] <= k:
print("YES")
else:
print("NO")
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 14567번: 선수과목 (Python/파이썬) - 위상정렬 (0) | 2022.12.11 |
---|---|
[백준] 13913번 : 숨바꼭질 4 (파이썬/Python) - BFS 풀이 (0) | 2022.12.10 |
[백준] 20444번: 색종이와 가위 (파이썬/Python) - 이진탐색 (0) | 2022.12.09 |
[백준] 20164번 : 홀수 홀릭 호석 (파이썬/Python) - 구현, 브루트포스 (0) | 2022.12.09 |
[백준] 1253번 : 좋다 (파이썬/Python) (0) | 2022.12.09 |