백준 - 17404 : RGB거리 2 (G4)

🏷️ python 🏷️ boj

수정일 : 2024-11-15


 1N = int(input())
 2L = [list(map(int, input().split())) for _ in range(N)]
 3
 4result = 100000
 5
 6for i in range(3):
 7    dp = [[0, 0, 0] for _ in range(N)]
 8    dp[0] = [10000]*3
 9    dp[0][i] = L[0][i]
10    for j in range(1, N):
11        dp[j][0] = min(dp[j-1][1], dp[j-1][2])+L[j][0]
12        dp[j][1] = min(dp[j-1][0], dp[j-1][2])+L[j][1]
13        dp[j][2] = min(dp[j-1][0], dp[j-1][1])+L[j][2]
14
15    dp[N-1][i] = 100000
16    result = min([result]+dp[N-1])
17
18print (result)
  • 인터넷을 참고하여 풀었다

  • 첫째집 3가지 X 마지막집 3가지 = 9가지 이지만

  • 색이 같은 경우를 제외하면 총 6가지 경우를 비교하게된다.

  • 첫번째 집에 특정 색만 칠하기 위해 나머지 색에 MAX값을 넣었다.

  • 최대값에 충분히 큰 값을 대입하지 않아 여러번 틀렸다.