Algorithm(BOJ, Python)/Dynamic Programing

[백준_11660] 구간 합 구하기 5 python

kurooru 2022. 7. 21. 14:13

grid 굳이 저렇게 받지 않아도 된다.

입력 어케해야 저렇게 앞에 0을 넣을 수 있을까 고민해봤는데

굳이 그럴 필요가 없었다.

dp만 그렇게 만들어주면 된다.

# 입력 속도 개선
import sys
input = sys.stdin.readline

# n, m 입력
n, m = map(int, input().split())

# grid
grid = [
    list(map(int, input().split())) for _ in range(n)
]

# dp 설계
dp = [
    [0] * (n+1) for _ in range(n+1)
]

# dp채워넣기
for i in range(1, n+1):
    for j in range(1, n+1):
        dp[i][j] = dp[i][j-1] + grid[i-1][j-1]

# x1, y1, x2, y2 입력받기
for _ in range(m):
    x1, y1, x2, y2, = map(int, input().split())

    # ans 설정
    ans = 0

    # ans 구하기
    for i in range(x1, x2 + 1):
        ans += dp[i][y2] - dp[i][y1-1]
    
    #출력
    print(ans)

입력속도 개선시키지 않으면 시간초과 뜨니 주의