반응형
알고리즘 분류
- 다이나믹 프로그래밍
- 누적 합
SOLUTION
import sys
N, M = map(int, sys.stdin.readline().split())
graph = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
dp = [[0 for _ in range(N+1)] for i in range(N+1)]
for i in range(N):
for j in range(N):
# dp[i][j] 번째는 2번 더해지니까 한번 뺴줘야 한다
dp[i+1][j+1] = (dp[i][j+1] + dp[i+1][j] - dp[i][j]) + graph[i][j]
# 누적 합이므로 중복되는 값들을 빼준다 dp[x1-1][y1-1]은 2번 빼지니까 한번 더해줘야 한다.
for _ in range(M):
x1, y1, x2, y2 = map(int, sys.stdin.readline().split())
print(dp[x2][y2] - (dp[x1-1][y2] + dp[x2][y1-1] - dp[x1-1][y1-1]))
'코딩테스트 대비 > BOJ' 카테고리의 다른 글
[Baekjoon/Python] 9251번: LCS - 효과는 굉장했다! (0) | 2022.05.26 |
---|---|
[Baekjoon/Python] 16953번: A → B - 효과는 굉장했다! (0) | 2022.04.03 |
[Baekjoon/Python] 9465번: 스티커 - 효과는 굉장했다! (0) | 2022.04.03 |
[Baekjoon/Python] 1991번: 트리 순회 - 효과는 굉장했다! (0) | 2022.04.03 |
[Baekjoon/Python] 1932번: 정수 삼각형 - 효과는 굉장했다! (0) | 2022.04.03 |