728x90
반응형

기본적인 다이나믹 프로그래밍 문제이다. 1차원 DP처럼 똑같이 해주면 된다. 

N, M = map(int, input().split())
li = [list(map(int, input().split())) for _ in range(N)]
dp = [[0]*M for _ in range(N)]
dp[0][0] = li[0][0]
for i in range(N):
    for j in range(M):
        if i == 0 and j == 0:
            continue
        elif i > 0 and j == 0:
            dp[i][j] = dp[i-1][j]
        elif i == 0 and j > 0:
            dp[i][j] = dp[i][j-1]
        else:
            dp[i][j] = max(dp[i-1][j], dp[i][j-1])
        if li[i][j] == 1:
            dp[i][j] += 1
print(max(map(max, dp)))
728x90
반응형

+ Recent posts