백준 11660: 구간 합 구하기 5 - DP (Python/파이썬)

Hyn·2024년 12월 16일

Algorithm(Py)

목록 보기
5/37
import sys
input = sys.stdin.readline

N, M = map(int, input().split())

board = list(list(map(int, input().split())) for _ in range(N))
dp = [[0] * (N+1) for _ in range(N+1)]

for r in range(1, N+1):
    for c in range(1, N+1):
        dp[r][c] = board[r-1][c-1] + dp[r][c-1] + dp[r-1][c] - dp[r-1][c-1]

for turn in range(M):
    x1, y1, x2, y2 = map(int, input().split())
    print(dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1-1] + dp[x1-1][y1-1])

처음에 row별 누적합 구하고 슬라이싱 하는 방식 썼다가 시간 초과남..

profile
쪼렙 개발자 하지만 포기하지 않지

0개의 댓글