728x90
https://www.acmicpc.net/problem/11660
11660번: 구간 합 구하기 5
첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네
www.acmicpc.net
💡 문제 풀이
기본적인 구간합 문제이다.
✔️ 느낀 점
문제를 이번에도 제대로 안 읽고 풀어서 헛되이 보낸 시간이 있었다. 조심하자..!
💻 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
board = []
for _ in range(n):
board.append(list(map(int, input().split())))
copied = [b[:] for b in board]
for i in range(n):
for j in range(1, n):
copied[i][j] += copied[i][j-1]
def calculate(x1, y1, x2, y2):
sum = 0
if x1 == x2 and y1 == y2:
print(board[x1][y1])
return
for i in range(x1, x2 + 1):
if y1 == 0: sum += copied[i][y2]
else: sum += (copied[i][y2] - copied[i][y1-1])
print(sum)
return
for _ in range(m):
x1, y1, x2, y2 = map(int, input().split())
calculate(x1-1, y1-1, x2-1, y2-1)
댓글