[BOJ] 백준 1149번: RGB거리
1일 1PS 9일차!
문제
실버 1
- 첫 번째부터 최소값을 더해나가면 된다.
- 하지만 이때 연속해서 같은 색이면 안되는데, 마지막 예제를 통해 확인해보면
- 두 번째 줄의 빨강은 R(32) + min(G(39), B(44)) 이다.
- 두 번째 줄의 초록은 G(83) + min(R(71), B(44)) 이다.
- 위와 같이 한 줄씩 더해 내려가면 된다.
포인트
- 두 번째 줄부터 i 번째는 i - 1 번째에서 다른 색의 최소값을 합한다.
코드
n = int(input())
a = [0]*n
for i in range(n):
a[i] = list(map(int,input().split()))
for i in range(1,n):
a[i][0]= min(a[i-1][1],a[i-1][2]) + a[i][0]
a[i][1]= min(a[i-1][0],a[i-1][2]) + a[i][1]
a[i][2]= min(a[i-1][0],a[i-1][1]) + a[i][2]
print(min(a[n-1][0],a[n-1][1],a[n-1][2]))
댓글남기기