2차원 DP를 푸는 게 아직 너무 어색하다,
- 어려웠던 점
- 누적합 데이터를 쌓아가는 부분
- 누적합 그래프를 바탕으로 일부 값을 계산하는 식을 짜는 부분
참고한 블로그
코드
import sys
input = sys.stdin.readline
#sys.stdin = open("input.txt", "rt")
N, M = map(int, input().split())
G = [list(map(int, input().split())) for _ in range(N)]
DP = [[0] * (N + 1) for _ in range(N + 1)]
for i in range(1, N + 1):
for j in range(1, N + 1):
DP[i][j] = DP[i - 1][j] + DP[i][j - 1] - DP[i - 1][j - 1] + G[i - 1][j - 1]
# point !!
for k in range(M):
x1, y1, x2, y2 = map(int, input().split())
result = DP[x2][y2] - DP[x2][y1 - 1] - DP[x1 - 1][y2] + DP[x1 - 1][y1 - 1]
# point !!
print(result)
'⚡️algorithm > step-up ++' 카테고리의 다른 글
[스택, 수 비교] 프로그래머스 lv2. 뒤에 있는 큰 수 찾기 (0) | 2023.02.23 |
---|---|
[다익스트라, Dijkstra, 구조] 백준 1753. 최단 경로 (0) | 2022.10.12 |
[dictionary, 조건에 맞는 값 탐색, 효율성] 프로그래머스 lv2. 순위검색 (feat. lambda, filter, map, combination, get(key)) (0) | 2022.09.14 |
[Dictionary 탐색] 프로그래머스 lv2. 신고결과받기 (feat. enumerate, set, dictionary) (0) | 2022.09.08 |