728x90
< 처음 풀이 >
역시 접근 조차 하지 못했었고, 동적 풀이를 공부하였다.
< 해결 방법 >
마찬가지로 dp 리스트를 만들어서 해결을 하려고 했다. 하지만
dp[i-3]+t[i-1]+t[i] 이 코드 부분을 잘못 생각했었고 오류가 떴다. 오류 부분을 이해를 하였고 동적 풀이법에 대해 어느 정도는 이해를 한 것 같다.
import sys
a = int(input())
dp = [0]*a
t = [ ]
for i in range(0,a):
t.append(int(sys.stdin.readline()))
if len(t)==1:
print(t[0])
elif len(t)==2:
print(t[0]+t[1])
else:
dp[0]=t[0]
dp[1]=t[0]+t[1]
dp[2]=max(t[0]+t[2],t[1]+t[2],dp[1])
for i in range(3,len(dp)):
dp[i] = max(dp[i-2]+t[i],dp[i-1],dp[i-3]+t[i-1]+t[i])
print(dp[-1])
728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 2579 계단 오르기 (0) | 2022.08.18 |
|---|---|
| [파이썬] 백준 9184 신나는 함수 실행 (0) | 2022.08.18 |
| [파이썬] 백준 1463 1로 만들기 (0) | 2022.08.17 |
| [파이썬] 백준 1912 연속합 (0) | 2022.08.16 |
| [파이썬] 백준 1018 체스판 다시 칠하기 (0) | 2022.08.05 |