본문 바로가기
카테고리 없음

[Python] 백준 11660번 : 구간 합 구하기 5

by 희조당 2023. 2. 10.
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)

댓글