[백준 1149번][Python/파이썬] RGB거리

공학도 Lee·2023년 2월 17일
0

백준 문제 풀이

목록 보기
46/63

1. 문제


출처: 백준 1149번 RGB거리

2. 풀이


집을 색칠하는 데 있어서, 다른 것은 고려하지 않아도 되고 앞뒷 집의 색깔들과만 다르면 된다.

먼저, 3개의 색깔을 칠하는 경우의 비용을 계속해서 저장해나가는 리스트를 설계하면 된다.
그리고 지금 색칠하는 색깔의 비용과 다른 2개의 색깔 중 지금까지 더해진 비용이 작은 값을 골라 비용을 합산한 뒤 리스트에 각각 저장한다.

Ex) 지금 빨강을 칠한다면, 이전 집이 파랑 또는 초록으로 칠해진 경우의 비용 중 작은 값을 골라 합산한다.

마지막으로, N 번째 집까지 색칠한 값 3개를 비교하여 최솟값을 출력하면 된다.

3. 소스코드


N = int(input())
dp = [list(map(int,input().split()))]

for i in range(N-1):
    a,b,c = map(int,input().split())
    temp1 = a+min(dp[i][1],dp[i][2])
    temp2 = b+min(dp[i][0],dp[i][2])
    temp3 = c+min(dp[i][0],dp[i][1])
    dp.append([temp1,temp2,temp3])

print(min(dp[N-1]))

4. 그 외


profile
이창민, Changmin Lee

0개의 댓글