DHistory
[Baekjoon] DP - 11660 구간 합 구하기 5 본문
문제
풀이
import sys
n, m = map(int, sys.stdin.readline().rstrip().split())
numbers = []
for _ in range(n):
data = list(map(int, sys.stdin.readline().rstrip().split()))
numbers.append(data)
coordinates = []
for _ in range(m):
coordinate = list(map(int, sys.stdin.readline().rstrip().split()))
coordinates.append(coordinate)
def solution(coordinates, a):
result = []
n = len(a)
d = [[0 for _ in range(n + 1)] for _ in range(n + 1)]
# 1,1부터 n,n까지 누적된 구역의 합을 구한다.
for i in range(1, n + 1):
for j in range(1, n + 1):
d[i][j] = d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1] + a[i - 1][j - 1]
# 구하는 영역을 제외한 나머지 영역을 뺀다 (중복으로 제외한 영역을 더해준다.)
for x1, y1, x2, y2 in coordinates:
result.append(
d[x2][y2] - d[x2][y1 - 1] - d[x1 - 1][y2] + d[x1 - 1][y1 - 1]
)
return result
print(*solution(coordinates, numbers), sep='\n')
채점 결과
'Computer Science > Algorithm' 카테고리의 다른 글
[Baekjoon] DP - 1890 점프 (0) | 2023.10.25 |
---|---|
[Baekjoon] DP - 1309 동물원 (0) | 2023.10.24 |
[Baekjoon] DP - 9465 스티커 (0) | 2023.09.26 |
[Baekjoon] DP - 10844 쉬운 계단 수 (0) | 2023.09.26 |
[Baekjoon] DP - 1149 RGB 거리 (0) | 2023.09.26 |