반응형
문제
https://www.acmicpc.net/problem/1149
이전문제들보다는 조금 복잡한 형태가 될거같다.
이웃과 같은색으로 칠할수 있다면 이전 최솟값에 집을 칠하는 비용의 최솟값을 더하면 간
단히 구해질수 있지만 조건이 이웃과 같은 색을 칠할수 없다는 것에서 문제가 조금 복잡해
질거같다.코드로 구현하는게 어려웠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import sys # 집의 수 n = int(sys.stdin.readline()) rgb_pay = [[0] * 3 for i in range(n)] for i in range(n): # 각 색별 페인트 비용 rgb_pay[i][0], rgb_pay[i][1], rgb_pay[i][2] = map(int, sys.stdin.readline().split()) #이번에 빨강,초록,파랑을 골랐을때의 최솟값이 들어간다.0=빨강 1=초록 2=파랑 rgb_sum = [[0] * 3 for i in range(n)] for i in range(n): if i == 0: rgb_sum[i] = rgb_pay[i] else: # 이번에 빨강을 고를때 최솟값(파랑,초록 둘중 작은거) # 이번에 초록을 고를때 이전값들중에서 최솟값(빨강,파랑) # 이번에 파랑을 고를때 이전값들중에서 최솟값(빨강,초록) rgb_sum[i][0] = rgb_pay[i][0] + min(rgb_sum[i - 1][1], rgb_sum[i - 1][2]) rgb_sum[i][1] = rgb_pay[i][1] + min(rgb_sum[i - 1][0], rgb_sum[i - 1][2]) rgb_sum[i][2] = rgb_pay[i][2] + min(rgb_sum[i - 1][0], rgb_sum[i - 1][1]) print(min(rgb_sum[n - 1])) #최종적으로 빨강,파랑,초록 을 골랐을때 최솟값 | cs |
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]동적계획법 백준 2579 (0) | 2020.01.09 |
---|---|
[Python]동적계획법 백준 1932 (0) | 2020.01.08 |
[Python]동적계획법 백준 9461 (0) | 2020.01.08 |
[Python]동적계획법 백준 1904 (0) | 2020.01.08 |
[Python]동적계획법 백준 1003 (0) | 2020.01.07 |
최근댓글