해결 과정
다이나믹 프로그래밍. 마지막에 인덱스 에러는 edge case를 살펴보면 된다. 해결 과정은 다른 풀이를 참고 했다.
여기서는 마지막 계단은 꼭 밟아야 하기 때문에 이를 기준으로 케이스를 분류한다. 그래서 else문 같은 식이 나온다.
나의 풀이
N = int(input())
score = []
for _ in range(N):
score.append(int(input()))
dp = [0] * (N+1)
if N == 1:
print(score[0])
elif N == 2:
print(score[0] + score[1])
else:
dp[0] = score[0]
dp[1] = score[0] + score[1]
dp[2] = max(score[0] + score[2], score[1] + score[2])
for i in range(3, N):
dp[i] = max(dp[i-3] + score[i-1] + score[i], dp[i-2] + score[i])
print(dp[N-1])
다른 풀이
IDEA
DP는 아이디어를 계속 접해보는게 맞겠다.
'Coding Test > 문제 풀이' 카테고리의 다른 글
[문제 풀이] 백준 1149 (0) | 2022.04.08 |
---|---|
[문제 풀이] 백준 5525 (0) | 2022.04.07 |
[문제 풀이] 백준 1780 (0) | 2022.04.05 |
[문제 풀이] 백준 1697 (0) | 2022.04.05 |
[문제 풀이] 백준 1463 (0) | 2022.04.04 |