[python] 백준 1149번 RGB거리

hyewon9913·2024년 5월 15일
0

코딩테스트(python)

목록 보기
19/46

처음 이 문제를 접했을때는 바로 생각나는 알고리즘 기법이 없어서 난감했다.

그런데 천천히 생각해보면 단순하게 자신과 인접하지 않은 두개중에서 최소값을 계속 더해주기만하면 가격의 최솟값을 구할 수 있다.

n = int(input())

home = [list(map(int,input().split())) for _ in range(n)]

#print(home)


for i in range(1,n):
    home[i][0]+= min(home[i-1][1],home[i-1][2])
    home[i][1]+= min(home[i-1][0],home[i-1][2])
    home[i][2]+= min(home[i-1][0],home[i-1][1])

print(min(home[n-1]))
#print(home)

그래서 이런식으로 각 배열에 그 전의 값들중 최솟값을 더해주면서 반복문을 수행하도록하였다. 값을 저장해나가는 방식이므로 DP알고리즘이라고 볼 수 있다.

풀이는 간단한데 방법을 생각하는게 어려웠던 문제였다.

profile
차근차근 굴러가는 코딩일지

0개의 댓글