https://www.acmicpc.net/problem/17404
오늘 풀어볼 문제는 저번 동적계획법에 있던 RGB거리문제에 이어 RGB거리2이다.
저번과 차이가 있다면 첫번째 집과 마지막 집이 이웃이라는점.
코드를 돌려 정확하게 푼 것 같은데 백준에서는 계속 틀렸다고 한다.
이유 아시는 분 댓글 부탁드립니다.
(마지막 집이 R,G,B냐에 따라 dp[0][j] = INF로 각각 놓고 첫번째 집이 마지막 집과 색상이 다르게 만들었다.)
import sys
N = int(sys.stdin.readline())
prices = [[0 for col in range(3)] for row in range(N)]
dp = [[0 for col in range(3)] for row in range(N)]
for i in range(N):
rgblist = list(map(int,sys.stdin.readline().split()))
prices[i] = rgblist
# prices[-1] = prices[0] #첫번째 집을 붙여둠
# print(prices)
dp[0] = prices[0] #0번째 집은 그냥 가격 그대로
# print(dp)
j = 1
result = []
for iter in range(3):
dp[0][iter] = 100001 #마지막집에 따라 바뀌게
while j < N:
# print(dp[j-1][0])
dp[j][0] = min(dp[j - 1][1] + prices[j][0], dp[j - 1][2] + prices[j][0])
dp[j][1] = min(dp[j - 1][0] + prices[j][1], dp[j - 1][2] + prices[j][1])
dp[j][2] = min(dp[j - 1][0] + prices[j][2], dp[j - 1][1] + prices[j][2])
j += 1
result.append(dp[N-1][iter])
print(min(result))
'개발 > PYTHON 알고리즘 연습' 카테고리의 다른 글
[파이썬] 백준 9019번 : DSLR (0) | 2020.02.15 |
---|---|
[파이썬] 백준 13913 : 숨바꼭질 4 (0) | 2020.02.13 |
[파이썬] 백준 9252 : LCS 2 (0) | 2020.02.13 |
[파이썬] 백준 14002 : 가장 긴 증가하는 부분 수열 4 (0) | 2020.02.13 |
[파이썬] 백준 12852 : 1로 만들기 2 (0) | 2020.02.12 |
댓글