알고리즘/백준

[python/1149]RGB거리

(ㅇㅅㅎ) 2020. 4. 14. 09:00
728x90
반응형

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

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

더보기

내 코드

규칙 중에서 i-1의 집 색과 i의 집 색이 같으면 안 되고 i+1의 집 색과 i의 집 색이 같으면 안 되기 때문에 i 기준의 식을 세워보아야 한다.

RGB[i][빨간색] = 최솟값(RGB[i-1][초록색], RGB[i-1][파란색]) + RGB[i][빨간색]
RGB[i][초록색] = 최솟값(RGB[i-1][빨간색], RGB[i-1][파란색]) + RGB[i][초록색]
RGB[i][파란색] = 최솟값(RGB[i-1][빨간색], RGB[i-1][초록색]) + RGB[i][파란색]

위와 같은 식을 적용시켜 마지막 값에서 빨간색, 초록색, 파란색 중 최솟값을 찾으면 된다.

 

예를 들어 입력을 아래와 같다고 가정할 때

 

3

1 2 3

3 2 1

1 2 3

 

0번을 1 2 3, 1번을 3 2 1이고 2번을 1 2 3이라고 하면

RGB[1][빨간색] = 최솟값(RGB[0][초록색]:2, RGB[0][파란색]:3) + RGB[1][빨간색]:3
                    = 2 + 3 = 5
RGB[1][초록색] = 최솟값(RGB[0][빨간색]:1, RGB[0][파란색]:3) + RGB[1][초록색]:2
                    = 1 + 2 = 3
RGB[1][파란색] = 최솟값(RGB[0][빨간색]:1, RGB[0][초록색]:2) + RGB[1][파란색]:1
                    = 1 + 1 = 2
0: 1 2 3
1: 5 3 2
2: 1 2 3


RGB[2][빨간색] = 최솟값(RGB[1][초록색]:3, RGB[1][파란색]:2) + RGB[2][빨간색]:1
                    = 2 + 1 = 3
RGB[2][초록색] = 최솟값(RGB[1][빨간색]:5, RGB[1][파란색]:2) + RGB[2][초록색]:2
                    = 2 + 2 = 4
RGB[2][파란색] = 최솟값(RGB[1][빨간색]:5, RGB[1][초록색]:3) + RGB[2][파란색]:3
                    = 3 + 3 = 6
최종 값을 살펴보면
2: 3 4 6
3 = 빨간색(0번) + 파란색(1번) + 빨간색(2번)
4 = 빨간색(0번) + 파란색(1번) + 초록색(2번)
6 = 빨간색(0번) + 초록색(1번) + 파란색(2번)


으로 이중 가장 작은 값은 3이다.

 

코드를 작성하면 아래와 같다.

if __name__ == '__main__':
    N = int(input())
    RGB = []
 
    for i in range(N):
        RGB.append(list(map(int, input().split())))
 
    for j in range(1len(RGB)):
        RGB[j][0= min(RGB[j - 1][1], RGB[j - 1][2]) + RGB[j][0]
        RGB[j][1= min(RGB[j - 1][0], RGB[j - 1][2]) + RGB[j][1]
        RGB[j][2= min(RGB[j - 1][0], RGB[j - 1][1]) + RGB[j][2]
    print(min(RGB[-1][0], RGB[-1][1], RGB[-1][2]))
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[python/2579]계단 오르기  (0) 2020.04.18
[python/1932]정수 삼각형  (0) 2020.04.16
[python/9461]파도반 수열  (0) 2020.04.11
[python/1904]01타일  (0) 2020.04.09
[python/1003]피보나치 함수  (0) 2020.04.07