백준 2167번 2차원 배열의 합 - Python

김정훈·2023년 7월 4일
0

2차원 배열의 누적합을 구하고 배열의 일 부분의 누적합을 구하는 문제이다.

이전에 풀었던 문제와 상당히 비슷한 구조

비슷한 문제 풀이

N, M = map(int, input().split())

prefix_sum = [[0] * (M + 1) for _ in range(N+1)]

for i in range(1, N+1):
  row = list(map(int, input().split()));
  for j in range(1, M+1):
    prefix_sum[i][j] = prefix_sum[i][j - 1] + row[j-1] + prefix_sum[i-1][j] - prefix_sum[i-1][j-1]    


K = int(input())
answer = []
for _ in range(K):
  i, j, x, y = map(int, input().split())
  
  part_sum = prefix_sum[x][y] - prefix_sum[i-1][y] - prefix_sum[x][j-1] + prefix_sum[i-1][j-1]
  answer.append(part_sum)

for n in answer:
  print(n)

0개의 댓글