728x90
SMALL
문제
https://www.acmicpc.net/problem/1149
1149번: RGB거리
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net
풀이
cost현재까지의 cost를 저장할 리스트를 만들고 R,G,B를 칠하는데 드는 비용을 저장한다.
cost의 해당값은 이전의 값에 해당값을 더하는 방식으로 업데이트 한다.
(업데이트시, 인접한곳은 같은 색으로 칠하지 못하게 하며, 값이 최소인 경우에만 업데이트한다.)
예제 1번의 두번째열(49,60,57)의 값 변화는 아래와 같다
노란: 업데이트 대상, 빨강: 비교대상이다. 오른쪽 두 표의 값을 비교하여 작은 쪽이 선택된다.
import sys
N=int(sys.stdin.readline())
cost=[] #비용을 저장할 리스트
for i in range(N):
R,G,B=map(int,sys.stdin.readline().split(' '))
cost.append([R,G,B])
for n in range(1,N): # cost업데이트
cost[n][0] = min(cost[n-1][1]+cost[n][0],cost[n-1][2]+cost[n][0])
cost[n][1] = min(cost[n - 1][0]+cost[n][1] , cost[n - 1][2]+cost[n][1] )
cost[n][2] = min(cost[n - 1][0]+cost[n][2] , cost[n - 1][1]+cost[n][2] )
print(min(cost[N-1][0],cost[N-1][1],cost[N-1][2]))
728x90
LIST
'코테공부 > python 백준' 카테고리의 다른 글
파이썬 백준 1932번: 정수 삼각형 (0) | 2024.04.07 |
---|---|
파이썬 백준 11058번: 크리보드 (0) | 2024.04.07 |
파이썬 백준 1463번 : 1로 만들기 (0) | 2024.04.06 |
파이썬 백준 2839번: 설탕배달 (0) | 2024.04.06 |
파이썬 백준 11725번 : 트리의 부모 찾기 - DFS, BFS (0) | 2024.04.02 |