엄지월드

백준 2167 2차원 배열의 합 본문

알고리즘

백준 2167 2차원 배열의 합

킨글 2024. 4. 8. 20:53
반응형

문제

방법

배열에 값을 모두 넣어 놓고, 어떻게 하면 주어진 i,j에서부터 x,y까지 모두 더할 수 있을지 고민하였다.

헷갈리지 않게 fromX, toX 이런식으로 명칭을 바꿔서 진행하였다.

for문을 통해서 시작점부터 종료점까지 순회하면 될 것 이라는 생각이 들었고, 그러면 어떻게 for문을 구성할지 머리를 굴린 후 구현하였다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.StringTokenizer;

// 2167
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());

        final int N = Integer.parseInt(st.nextToken());
        final int M = Integer.parseInt(st.nextToken());
        int arr[][] = new int[N+1][M+1];
        for (int i = 1; i < N+1; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 1; j < M+1 ; j++) {
                arr[i][j] = Integer.parseInt(st.nextToken());
            }
        }
        
        final int loop = Integer.parseInt(br.readLine());
        for (int i = 0; i < loop; i++) {
            st = new StringTokenizer(br.readLine());
            final int fromX = Integer.parseInt(st.nextToken());
            final int fromY = Integer.parseInt(st.nextToken());
            final int toX = Integer.parseInt(st.nextToken());
            final int toY = Integer.parseInt(st.nextToken());
            int result = 0;
            for (int j = fromX; j < toX+1; j++) {
                for (int k = fromY; k < toY+1; k++) {
                    result += arr[j][k];
                }
            }
            System.out.println(result);
        }
    }
}

 

'알고리즘' 카테고리의 다른 글

백준 10845 큐  (0) 2024.04.15
백준 13241 최소공배수  (0) 2024.04.14
백준 11004 K번째 수  (0) 2024.04.07
백준 11651 좌표 정렬하기 2  (0) 2024.04.07
백준 7785 회사에 있는 사람  (0) 2024.04.03
Comments