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()
'Koala - 18기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/C++] 2688번: 줄어들지 않아 (0) | 2025.03.30 |
---|---|
[백준/C++] 2133번: 타일 채우기 (0) | 2025.03.29 |
[백준/Python] 16571번 : 알파 틱택토 (0) | 2025.03.28 |
[백준/C++] 15686번: 치킨 배달 (0) | 2025.03.23 |
[백준/C++] 20529번: 가장 가까운 세 사람의 심리적 거리 (0) | 2025.03.23 |