Notice
Recent Posts
Recent Comments
Link
-
DP :: 백준 :: 계단 오르기 :: 2579 본문
계단오르기 2579
[문제 풀이]
i번째 계단을 밟았을 때 최댓값은 두 경우
- i-2번째 계단 밟고 i번째 밟을 경우
- i-1번째 계단 밟고 i번째 밟을 경우
중 최댓값을 고르면 답!!??
이 아니라 틀린다!!
2번조건 "연속된 세 개의 계단을 밟으면 안된다"는 조건이 있기 때문이다!
자, 그러면 어떻게 풀어야 할까?
일단 2차원 배열을 생성한다.
i번째 계단을 밟았을 때
1) 1번 연속으로 밟은 경우 : dp[1][i]
2) 2번 연속으로 밟은 경우 : dp[2][i]
두 경우로 나눌 수 있다!
이때,
1) i번째 계단을 1번 연속으로 밟기 위해서는 i-2번째 계단에서 2칸 이동하는 방법밖에 없으므로
dp[1][i] = max(dp[1][i-2], dp[2][i-2])+score[i]
이렇게 계산할 수 있고
2) i번째 계단을 2번 연속으로 밟기 위해서는 i-1번째 계단에서 1칸 이동하는 방법밖에 없으므로
dp[2][i] = dp[1][i-1]+score[i]
이렇게 계산할 수 있다.
i번까지 모두 계산한 후
max(dp[1][i], dp[2][i]) 출력하면 끝!!
'알고리즘 > DP' 카테고리의 다른 글
DP :: 백준 :: 1학년 :: 5557 (0) | 2016.11.04 |
---|---|
DP :: 백준 :: 숫자삼각형 :: 1932 (0) | 2016.11.02 |
DP :: 백준 :: 이친수 :: 2193 (0) | 2016.11.02 |
DP :: 백준 :: 1로 만들기 :: 1463 (0) | 2016.11.02 |
DP :: 백준 :: RGB거리 :: 1149 (0) | 2016.11.02 |
Comments