๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[ํžŒํŠธ ๋ฌธ์ œ3-2] 2์ฐจ์› ๋ฐฐ์—ด์˜ ํ•ฉ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2023. 10. 5.

2์ฐจ์› ๋ฐฐ์—ด์˜ ํ•ฉ

 

๋ฌธ์ œ

2์ฐจ์› ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ (i, j) ์œ„์น˜๋ถ€ํ„ฐ (x, y) ์œ„์น˜๊นŒ์ง€์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ˆ˜๋“ค์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋ฐฐ์—ด์˜ (i, j) ์œ„์น˜๋Š” iํ–‰ j์—ด์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ N, M(1 ≤ N, M ≤ 300)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ •์ˆ˜๋กœ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ํ•ฉ์„ ๊ตฌํ•  ๋ถ€๋ถ„์˜ ๊ฐœ์ˆ˜ K(1 ≤ K ≤ 10,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ K๊ฐœ์˜ ์ค„์—๋Š” ๋„ค ๊ฐœ์˜ ์ •์ˆ˜๋กœ i, j, x, y๊ฐ€ ์ฃผ์–ด์ง„๋‹ค(1 ≤ i ≤ x ≤ N, 1 ≤ j ≤ y ≤ M).

์ถœ๋ ฅ

K๊ฐœ์˜ ์ค„์— ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ํ•ฉ์€ 231-1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 

2 3
1 2 4
8 16 32
3
1 1 2 3
1 2 1 2
1 3 2 3

์˜ˆ์ œ ์ถœ๋ ฅ 1 

63
2
36

 

 

<<ํ’€์ด>>

package sec01.hint3_1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class pjh_2์ฐจ์›๋ฐฐ์—ด์˜ํ•ฉ {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        int[][] arr = new int[N][M];

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < M; j++) {
                arr[i][j] = Integer.parseInt(st.nextToken());
            }
        }

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

        while (k-- > 0){
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            int sum = 0;
            for (int l = i - 1; l < x; l++) {
                for (int m = j - 1; m < y ; m++) {
                    sum += arr[l][m];
                }
            }
            System.out.println(sum);
        }


    }

}

StringTokenizer ํด๋ž˜์Šค์™€ nextToken ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€ ๋ฌธ์ œ์ด๋‹ค.

 

๋Œ“๊ธ€