본문 바로가기

Algorithm

[Java] 백준 2167 : 2차원 배열의 합

📌 문제

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

 

2167번: 2차원 배열의 합

첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는

www.acmicpc.net

📝 풀이

  1. 2차원 배열 생성 & 배열에 값 저장하기
  2. 쿼리의 개수 입력 받기
  3. k 만큼 반복하면서 각각의 더한 값 출력
  4. 쿼리 범위 내의 값의 합 구하기 

💻 소스코드

package baekjoon;

import java.util.Scanner;

// 2차원 배열의 합, S : 5
public class B2167 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();

        // 1)
        int[][] arr = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                arr[i][j] = scanner.nextInt();
            }
        }

        // 2)
        int k = scanner.nextInt();

        // 3)
        for (int r = 0; r < k; r++) {
            int sum = 0;
            int i = scanner.nextInt();
            int j = scanner.nextInt();
            int x = scanner.nextInt();
            int y = scanner.nextInt();

            // 4)
            for (int row = i - 1; row < x; row++) {
                for (int col = j - 1; col < y; col++) {
                    sum += arr[row][col];
                }
            }
            System.out.println(sum);
        }
    }
}