BOJ 1149 : RGB 거리 (Python)
λ¬Έμ
RGB거리μλ μ§μ΄ Nκ° μλ€. 거리λ μ λΆμΌλ‘ λνλΌ μ μκ³ , 1λ² μ§λΆν° Nλ² μ§μ΄ μμλλ‘ μλ€.
μ§μ λΉ¨κ°, μ΄λ‘, νλ μ€ νλμ μμΌλ‘ μΉ ν΄μΌ νλ€. κ°κ°μ μ§μ λΉ¨κ°, μ΄λ‘, νλμΌλ‘ μΉ νλ λΉμ©μ΄ μ£Όμ΄μ‘μ λ, μλ κ·μΉμ λ§μ‘±νλ©΄μ λͺ¨λ μ§μ μΉ νλ λΉμ©μ μ΅μκ°μ ꡬν΄λ³΄μ.
- 1λ² μ§μ μμ 2λ² μ§μ μκ³Ό κ°μ§ μμμΌ νλ€.
- Nλ² μ§μ μμ N-1λ² μ§μ μκ³Ό κ°μ§ μμμΌ νλ€.
- i(2 ≤ i ≤ N-1)λ² μ§μ μμ i-1λ², i+1λ² μ§μ μκ³Ό κ°μ§ μμμΌ νλ€.
μ λ ₯
첫째 μ€μ μ§μ μ N(2 ≤ N ≤ 1,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ κ° μ§μ λΉ¨κ°, μ΄λ‘, νλμΌλ‘ μΉ νλ λΉμ©μ΄ 1λ² μ§λΆν° ν μ€μ νλμ© μ£Όμ΄μ§λ€. μ§μ μΉ νλ λΉμ©μ 1,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λͺ¨λ μ§μ μΉ νλ λΉμ©μ μ΅μκ°μ μΆλ ₯νλ€.
νμ΄
ai λ i λ²μ§Έ μΈλ±μ€ μΌ λ λͺ¨λ μ§μ μΉ νλ μ΅μ λΉμ©μ λνλΈλ€. aiμ μμ΄ λΉ¨κ°μΈ κ²½μ°, νλμΈ κ²½μ°, μ΄λ‘μΈ κ²½μ°λ₯Ό λλ μ κ³μ°νλ€.
ex) ai μ μμ΄ λΉ¨κ°μΈ κ²½μ°, color1μ a(i-1)μ νλμμ μΉ νλ λΉμ©μ΄κ³ color2λ a(i-1)μ μ΄λ‘μμ μΉ νλ λΉμ©μ΄ λλ€.
for λ¬Έμ μ€νμ΄ λλ λ€μ dp[n-1][0], dp[n-1][1], dp[n-1][2] μ€μμ κ°μ₯ κ°μ΄ μμ κ²μ΄ λ¬Έμ μ λ΅μ΄ λλ€.
μ½λ
n = int(input())
array = [list(map(int, input().split())) for _ in range(n)]
dp = [[0 for j in range(3)] for i in range(n)]
for i in range(3):
dp[0][i] = array[0][i]
for i in range(1,n):
for j in range(3):
if j == 0:
dp[i][j] = min(dp[i-1][1],dp[i-1][2]) + array[i][j]
elif j == 1:
dp[i][j] = min(dp[i-1][0],dp[i-1][2]) + array[i][j]
else:
dp[i][j] = min(dp[i-1][0],dp[i-1][1]) + array[i][j]
print(min(dp[n-1][0],dp[n-1][1],dp[n-1][2]))