https://www.acmicpc.net/problem/1149
N=int(input())
dp=[]
for i in range(N):
dp.append(list(map(int,input().split())))
for i in range(1,N):
#현재가 빨간색 지붕이라면->이전 지붕이 초록색/파란색이여야함
dp[i][0]+=min(dp[i-1][1],dp[i-1][2])
#현재가 초록색 지붕이라면->이전 지붕이 빨간색/파란색이여야함
dp[i][1]+=min(dp[i-1][0],dp[i-1][2])
#현재가 파란색 지붕이라면->이전 지붕이 빨간색/초록색이여야함
dp[i][2]+=min(dp[i-1][0],dp[i-1][1])
print(min(dp[N-1][0],dp[N-1][1],dp[N-1][2]))
DP 진짜 너무 어렵다,,,,
문제를 읽고도 알고리즘을 어떻게 풀어야할지 감도 안 잡힌다,,,

DP 문제를 풀 때마다 진짜 이 짤 같은 느낌,,,, 언제쯤 이런 문제도 잘 풀게 될까ㅜㅜ
'coding test > Baekjoon' 카테고리의 다른 글
| [Python] 2293번 동전 1 (0) | 2025.05.19 |
|---|---|
| [Python] 2294번 동전 2 (0) | 2025.05.19 |
| [Python] 9095번 1, 2, 3 더하기 (0) | 2025.05.18 |
| [Python] 2579번 계단 오르기 (0) | 2025.05.18 |
| [Python] 13913번 숨바꼭질 4 (0) | 2025.05.08 |