본문 바로가기
CODING/BAEKJOON

[BAEKJOON] 2167번 2차원 배열의 합

by snow_white 2022. 1. 24.


시작 좌표와 끝 좌표는 1씩 증가하시키며 범위를 늘려나간다.

이중 for문을 활용하여 쉽게 해결할 수 있다.

첫 번째 for문은 시작 좌표 x에서 끝 좌표 x까지 반복,

두 번째 for문은 시작 좌표의 y에서 끝 좌표의 y까지 반복하면서

배열 값을 더해나간다.

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

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int r = Integer.parseInt(st.nextToken());
		int c = Integer.parseInt(st.nextToken());
		int[][] arr = new int[r][c];
		
		for(int i=0; i<r; i++) {
			StringTokenizer st1 = new StringTokenizer(br.readLine());
			for(int j=0; j<c; j++) {
				arr[i][j] = Integer.parseInt(st1.nextToken());
			}
		}
		int tc = Integer.parseInt(br.readLine());
		for(int i=0; i<tc; i++) {
			StringTokenizer st2 = new StringTokenizer(br.readLine());
			int start_x = Integer.parseInt(st2.nextToken())-1;
			int start_y = Integer.parseInt(st2.nextToken())-1;
			int end_x = Integer.parseInt(st2.nextToken())-1;
			int end_y = Integer.parseInt(st2.nextToken())-1;
			int sum = 0;
			for(int j=start_x; j<=end_x; j++) {				
				for(int k=start_y; k<=end_y; k++) {
					sum += arr[j][k];
				}
			}
			System.out.println(sum);
		}
	}
}

[출처]

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

 

2167번: 2차원 배열의 합

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

www.acmicpc.net

 

'CODING > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 1110번 더하기 사이클  (0) 2022.01.24
[BAEKJOON] 4344번 평균은 넘겠지  (0) 2022.01.24
[BAEKJOON] 2851번 슈퍼 마리오  (0) 2022.01.24
[BAEKJOON] 2577번 숫자의 개수  (0) 2022.01.24
[BAEKJOON] 8958번 OX퀴즈  (0) 2022.01.24

댓글