Koala - 18기/코딩테스트 심화 스터디

[python/백준] 15724: 주지수

ㄱㅈㅅㅇ 2025. 3. 29. 15:33

https://www.acmicpc.net/problem/15724

 

전형적인 누적합 문제라 이게 왜 DP에 있지? 하는 고민이 들었습니다

찾아보니 이런 식의 누적합 풀이법도 사실 DP 테이블을 사용하고 채우므로, 넓은 의미에서 DP 풀이가 맞다고 하더라구요!

 

import sys
input = sys.stdin.readline 

def main(): 
    n,m = map(int,input().split())
    ground = []
    for _ in range(n):
        ground.append(list(map(int,input().split())))
    
    prefixSum = [[0 for i in range(m+1)] for j in range(n+1)]

    for i in range(1,n+1):
        for j in range(1,m+1):
            prefixSum[i][j] = ground[i-1][j-1] + prefixSum[i-1][j] + prefixSum[i][j-1] - prefixSum[i-1][j-1]

    k = int(input())
    for _ in range(k):
        x1, y1, x2, y2 = map(int,input().split())
        print(prefixSum[x2][y2] - prefixSum[x1-1][y2] - prefixSum[x2][y1-1] + prefixSum[x1-1][y1-1])

if __name__ == "__main__":
    main()