처음 이 문제를 접했을때는 바로 생각나는 알고리즘 기법이 없어서 난감했다.
그런데 천천히 생각해보면 단순하게 자신과 인접하지 않은 두개중에서 최소값을 계속 더해주기만하면 가격의 최솟값을 구할 수 있다.
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알고리즘이라고 볼 수 있다.
풀이는 간단한데 방법을 생각하는게 어려웠던 문제였다.