[파이썬] 백준 17485 : 진우의 달 여행 (Large) (골드5)
풀이
방향성 생각
- x,y 이외에 같은 노드에서도 방향을 기억해야하는 문제
- 3차원 바텀업 DP로 풀이
전체코드
import sys
input = sys.stdin.readline
H,W = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(H)]
dp = [[[10**5+1]*W for _ in range(H)] for _ in range(3)]
for d in range(3):
dp[d][0] = arr[0][:]
dires = [-1,0,1]
for y in range(1,H):
for x in range(W):
for d in range(3):
px = x - dires[d]
if 0 <= px < W:
for pd in range(3):
if pd != d:
dp[d][y][x] = min(dp[d][y][x], dp[pd][y-1][px] + arr[y][x])
print(min(min(dp[d][-1]) for d in range(3)))
코멘트
- 한 노드를 업데이트 할 때, 여러 방향에서 업데이트 되는 경우 배열의 양 끝에서 인덱스 에러가 발생한다.
- 현재 노드 x를 기준으로 방향을 하나 정해주고 방향 별로 배열 업데이트 하기.
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[파이썬] 백준 2613 : 숫자구슬 (골드2) (0) | 2025.04.10 |
---|---|
[파이썬] 백준 20181 : 꿈틀꿈틀 호석 애벌레 - 효율성 (골드2) (0) | 2025.04.07 |
[파이썬] 백준 2515 : 전시장 (골드2) (0) | 2025.04.07 |
[파이썬] 백준 1890 : 점프 (실버1) (0) | 2025.04.05 |
[파이썬] 프로그래머스 : 연속 펄스 부분 수열의 합 (레벨3) (0) | 2025.03.23 |
[파이썬, 자바] 백준 12865 : 평범한 배낭 (골드5) (0) | 2025.02.09 |
[파이썬, 자바] 백준 2240 : 자두나무 (골드5) (0) | 2025.02.09 |
댓글