시작 좌표와 끝 좌표는 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
'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 |
댓글