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

+ Recent posts