본문 바로가기
알고리즘

Prefix Sum, Prefix Sum of Matrix

by 이재현9999 2024. 10. 11.
import sys
input = sys.stdin.readline

N, M = map(int, input().split())
lst = list(map(int, input().split()))
sum_lst = [0] * len(lst)
sum_lst[0] = lst[0]
for i in range(1, len(sum_lst)):
    sum_lst[i] = sum_lst[i - 1] + lst[i]

for _ in range(M):
    i, j = map(int, input().split())
    if i == 1: print(sum_lst[j - 1])
    else: print(sum_lst[j - 1] - sum_lst[i - 2])
'''
2차원에서 (N1, M1) 부터 (N2, M2)까지 구간합 수식
sums[N2][M2] - sums[N2][M1 - 1] - sum[N1-1][M2] + sum[N1 - 1][M1 - 1]
'''

import sys
input = sys.stdin.readline

N, M = map(int, input().split())
matrix = []
presum_matrix = [[0] * (N+1) for _ in range(N+1)]

for _ in range(N):
    a = list(map(int, input().split()))
    matrix.append(a[:])

for i in range(1, N+1):
    for j in range(1, N+1):
        presum_matrix[i][j] = matrix[i-1][j-1] + presum_matrix[i - 1][j] + presum_matrix[i][j-1] - presum_matrix[i-1][j-1]

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

'알고리즘' 카테고리의 다른 글

Sieve of Eratosthenes  (1) 2024.10.11
MST  (0) 2024.10.11
Topology Sort  (0) 2024.10.11
Segment Tree  (0) 2024.10.11
Floyd-Warshall  (0) 2024.10.11