algorithm/baekjoon 문제

[백준 11660] 구간 합 구하기 5

장경훈 2022. 12. 12. 14:58
  # 백준 11660번 문제검색 링크

N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 
www.acmicpc.net

 

Key Point

  • 합배열을 만드는 방법은 sum_array[i][j]= sum_array[i-1][j]+sum_array[i][j-1]-sum_array[i-1][j-1]+numbers[i][j] 이다.   *그림을 그려보면 이해하기 편하다
  • 문제의 구간의 합을 구하기 위해서는 sum_array[x2][y2]-sum_array[x1-1][y2]-sum_array[x2][y1-1]+sum_array[x1-1][y1-1]의 공식을 사용하면 된다. *이것도 그림을 그려보면 편하다

 

 

문제 코드

import sys
input=sys.stdin.readline

N,M= map(int ,input().split())
numbers=[[0]*(N+1)]
sum_array=[[0]*(N+1) for _ in range(N+1)]

for _ in range(N):
    numbers.append([0]+list(map(int, input().split())))

for i in range(1,N+1): #합배열 구하기
    for j in range(1,N+1):
        sum_array[i][j]=sum_array[i-1][j]+sum_array[i][j-1]-sum_array[i-1][j-1]+numbers[i][j]

for _ in range(M): #문제에서 원하는 구간별의 합 구하기
    x1,y1,x2,y2=map(int,input().split())
    print(sum_array[x2][y2]-sum_array[x1-1][y2]-sum_array[x2][y1-1]+sum_array[x1-1][y1-1])

'algorithm > baekjoon 문제' 카테고리의 다른 글

[백준1253번] 좋다  (0) 2022.12.15
[백준 10986] 나머지 합  (0) 2022.12.13
[백준 11659]구간 합 구하기4  (0) 2022.12.12
등수 매기기[2012번]  (0) 2022.07.10
문제검색[1543번]  (0) 2022.07.10