2579번 - 계단 오르기
dp[0]은 이전계단을 밟고 이번계단도 밟았을때
dp[1]은 이전 계단을 밟지 않고 이번 계단을 밟았을때
dp[2]는 이전 계단을 밟고 이번 계단을 밟았을때
이 3가지로 나누어 마지막 계단까지 계산한 후 계단을 밟는 경우인 dp[0][n]와 dp[1][n] 둘중 최댓값을 계산하는 방식으로 해를 구했습니다
반례나 알고리즘의 허점을 알수 있을까요
dp[2][i]는 i번째 계단을 밟지 않는 경우인 것 같네요
dp[0][i]를 갱신할 때 dp[0][i-1]도 비교해 줘야 할 것 같고요.
아 밟지 않았을때라고 서야 하는걸 잘못 썻습니다
dp [0][i]를 갱신할 때 세 칸을 연속으로 밟을 수 없으므로 dp[0][i-1]은 고려하지 않아도 되는거 아닌가요?
dp[0][i - 1]은 비교하지 않아야 하네요 실수...
다시 읽어보니 초기화 단계가 문제일 것 같습니다. 우선 dp[0][2]가 의도한 대로 갱신이 안 될 것 같아요. 첫 번째, 두 번째 계단의 점수를 다 더한 값이 들어가야 하는데 두 번째 계단 값만 들어온 셈이니... 그리고 dp[2][1]같은 경우는 1번 계단을 안 밟았는데 1번 계단이 들어가 있는 것 같아요.
아마도 dp[2][1] = arr[1];을 dp[1][1] = arr[1];으로 바꾸면 맞지 않을까 싶습니다.
댓글을 작성하려면 로그인해야 합니다.
zeya9643 4년 전
dp[0]은 이전계단을 밟고 이번계단도 밟았을때
dp[1]은 이전 계단을 밟지 않고 이번 계단을 밟았을때
dp[2]는 이전 계단을 밟고 이번 계단을 밟았을때
이 3가지로 나누어 마지막 계단까지 계산한 후 계단을 밟는 경우인 dp[0][n]와 dp[1][n] 둘중 최댓값을 계산하는 방식으로 해를 구했습니다
반례나 알고리즘의 허점을 알수 있을까요