Notice
Recent Posts
Recent Comments
Link
목록1149 (1)
Be a developer
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1Oanr/btqyKHTOn5F/hsAztvljPx5wKUFX3BL930/img.png)
기본적인 DP 문제이다. 임의의 한 지점(i 번째)에 있는 집이 빨강일 때, 초록일 때 파랑일 때로 나누어서 생각한다. 1)빨강일 때: min(i-1번 째 있는 집이 파랑, i-1번 째 있는 집이 노랑) + i번째가 빨강일 때 칠하는 비용 2)초록일 때: min(i-1번 째 있는 집이 빨강, i-1번 째 있는 집이 파랑) + i번째가 초록일 때 칠하는 비용 3)파랑일 때: min(i-1번 째 있는 집이 빨강, i-1번 째 있는 집이 초록) + i번째가 파랑일 때 칠하는 비용 따라서 DP 배열을 선언할 때 2차원 배열로 선언하고 dp[n][3]으로 생선한다.(n은 집의 개수, 3은 빨강,초록,파랑) 마지막 최솟값은 n번째 집의 min(빨강,초록,파랑) 이다. 코드는 아래와 같다. import java.io..
알고리즘
2019. 10. 1. 01:15