행렬을 입력받고 한 행마다 숫자 하나를 선택해서 더한 값 중 최댓값을 구하는 문제입니다. 단 숫자를 선택할 때 같은 열의 숫자는 연속으로 선택할 수 없습니다.
def solution(land):
length=len(land)
dp=[[0, 0, 0, 0] for _ in range(length)]
for i in range(4):
dp[0][i]=land[0][i]
for i in range(1,length):
for j in range(4):
maxNum=0
for k in range(4):
if j==k:
continue
maxNum=max(maxNum, dp[i-1][k])
dp[i][j]=maxNum+land[i][j]
return max(dp[length-1])