[BOJ] 1149 RGB 거리

BbickBbick_Develop·2022년 9월 28일
0

BOJ

목록 보기
4/8
post-thumbnail

아이디어

  1. 경우의 수는 총 3가지(첫번째 집을 R, G, B로 할 지)
  2. N번째에서의 최솟값은, 그 전에 최솟값을 했을 때 어떤 걸 고를지에 대한 것임
  3. 즉 i번째의 최솟값은 i-1번째에서 최솟값을 가졌을 때 어떤 RGB를 고를지에 대한 것
  4. 그러므로 최솟값을 선택한 흔적을 계속 쌓아가면 됨
# 집의 숫자
# 집의 숫자
N = int(input())
# 집어 넣을 색깔의 숫자
houses = [list(map(int, input().split())) for _ in range(N)]
for i in range(1, len(houses)):
	# 1번째 집에서 RGB를 각각 선택하는 건 0번째 집에서 어떤 선택을 했냐에 따라 가질 수 있는 최저값이 달라짐
    houses[i][0] = min(houses[i - 1][1], houses[i - 1][2]) + houses[i][0]
    houses[i][1] = min(houses[i - 1][0], houses[i - 1][2]) + houses[i][1]
    houses[i][2] = min(houses[i - 1][0], houses[i - 1][1]) + houses[i][2]
    # 따라서 1번째에서 R을 칠한다면 0번째에서 G, B 중 최저값을 칠했어야 하고
    # 나머지 2가지도 마찬가지
    # 이 값을 계속 쌓아나가는 것
print(min(houses[N - 1][0], houses[N - 1][1], houses[N - 1][2]))
profile
삑삑도요가 되자

0개의 댓글