BAEKJOON #1149 RGB거리

2021. 4. 30. 11:20개발노트

이 문제의 저작권은 BAEKJOON에 있습니다.

https://www.acmicpc.net/problem/1149

 

풀이

  1. 주어진 집들의 RGB값을 리스트에 삽입
  2. 첫번째 집은 이미 칠해져 있으니 for문을 1로해서 두번째 집부터 칠한다.
  3. 집마다 주어진 규칙에 따라 색이 겹치지 않도록 값을 구하고 리스트 값을 바꿔준다.
# RGB거리
# https://www.acmicpc.net/problem/1149

N = int(input())

RGB_list = []
for _ in range(N):
    RGB_list.append(list(map(int, input().split(" "))))

# 집마다 칠하는 비용의 최솟값 구하기
for i in range(1, N):
    # 1번째 칸을 빨간색으로 칠했을 때
    RGB_list[i][0] = RGB_list[i][0] + min(RGB_list[i-1][1], RGB_list[i-1][2])
    # 2번째 칸을 초록색으로 칠했을 때
    RGB_list[i][1] = RGB_list[i][1] + min(RGB_list[i-1][0], RGB_list[i-1][2])
    # 3번째 줄을 파란색으로 칠했을 때
    RGB_list[i][2] = RGB_list[i][2] + min(RGB_list[i-1][0], RGB_list[i-1][1])
print(min(RGB_list[N-1][0], RGB_list[N-1][1], RGB_list[N-1][2]))