문제 -> https://www.acmicpc.net/problem/9465
하나를 선택하면 상하좌우를 선택할 수가 없다.
그러면, 대각선으로만 추가적으로 계속 선택해나갈 수 있다는 말.
근데, 무조건 제일 근접한 대각선에 위치한 값만 가져와서는 안된다.
그 옆에있는 것도 고려를 해서 둘 중 큰 값을 골라야 한다.
이런식으로 구상을 할 수가 있다.
점화식은 위 그림을 토대로
dp[0][i] = Max(dp[1][j-1], dp[1][j-2]) + dp[0][i];
dp[1][i] = Max(dp[0][j-1], dp[0][j-2]) + dp[1][i];
가 되겠다.
배열을 왜 한개만 썼냐면,
굳이 두개를 쓸 필요없이 dp배열에 초기값을 넣고서
이후 각각의 최댓값만 넣주면 더 이상 쓸 필요가 없기 때문이다.
'BOJ' 카테고리의 다른 글
[BOJ][DP] 11053. 가장 긴 증가하는 부분 수열 (0) | 2018.01.18 |
---|---|
[BOJ][DP] 2293. 동전 1 (0) | 2018.01.17 |
[BOJ][DP] 1010. 다리 놓기 (0) | 2018.01.14 |
[BOJ][DP] 1463. 1로 만들기 (0) | 2018.01.12 |
[BOJ][DP] 2167. 2차원 배열의 합 (0) | 2018.01.12 |