[백준][Java] 2167번 2차원 배열의 합 (누적합)

[백준][Java] 2167번 2차원 배열의 합 (누적합)

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.util.StringTokenizer;

public class Main {

private static BufferedReader br = new BufferedReader( new InputStreamReader( System . in ));

private static BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System . out ));

public static void main( String [] args) throws IOException{

String [] str = br.readLine(). split ( " " );

int N = Integer. parseInt (str[ 0 ]);

int M = Integer. parseInt (str[ 1 ]);

int [][] arr = new int [N + 1 ][M + 1 ];

int [][] accum = new int [N + 1 ][M + 1 ];

for ( int i = 1 ; i < = N; i + + ) {

StringTokenizer stk = new StringTokenizer(br.readLine(), " " );

for ( int j = 1 ; j < = M; j + + ) {

arr[i][j] = Integer. parseInt (stk.nextToken());

accum[i][j] = accum[i][j - 1 ] + accum[i - 1 ][j] - accum[i - 1 ][j - 1 ] + arr[i][j];

}

}

int K = Integer. parseInt (br.readLine());

for ( int m = 1 ; m < = K; m + + ) {

str = br.readLine(). split ( " " );

int i = Integer. parseInt (str[ 0 ]);

int j = Integer. parseInt (str[ 1 ]);

int x = Integer. parseInt (str[ 2 ]);

int y = Integer. parseInt (str[ 3 ]);

int res = accum[x][y] - accum[i - 1 ][y] - accum[x][j - 1 ] + accum[i - 1 ][j - 1 ];

System . out . println (res);

}

// bw.write("");

// bw.flush();

// bw.close();

}

}

from http://aig2029.tistory.com/281 by ccl(A) rewrite - 2021-09-18 06:01:51