슈콩

[BOJ] 백준 11660 구간 합 구하기 5 본문

Algorithms/Baekjoon

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

shukong 2025. 8. 22. 20:03

[문제]

https://www.acmicpc.net/problem/11660

 

[소스 코드]

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer st = new StringTokenizer(br.readLine());
    	StringBuilder sb = new StringBuilder();
    	int n = Integer.parseInt(st.nextToken());
    	int m = Integer.parseInt(st.nextToken());
    	int[][] map = new int[n+1][n+1];
    	for(int i=1;i<=n;i++) {
    		st = new StringTokenizer(br.readLine());
    		for(int j=1;j<=n;j++) {
    			map[i][j] = Integer.parseInt(st.nextToken());
    		}
    	}
    	int[][] dp = new int[n+1][n+1];
    	for(int i=1;i<=n;i++) {
    		for(int j=1;j<=n;j++) {
    			dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + map[i][j];
    		}
    	}
    	while(m-->0) {
    		st = new StringTokenizer(br.readLine());
    		int r1 = Integer.parseInt(st.nextToken());
    		int c1 = Integer.parseInt(st.nextToken());
    		int r2 = Integer.parseInt(st.nextToken());
    		int c2 = Integer.parseInt(st.nextToken());
    		int result = dp[r2][c2] - dp[r1-1][c2] - dp[r2][c1-1] + dp[r1-1][c1-1];
    		sb.append(result + "\n");
    	}
    	System.out.println(sb);
    }
}