728x90
https://www.acmicpc.net/problem/2167
● 문제
처음에 입력값이 너무 복잡해서 무슨 말인가 했지만 천천히 읽어보면서 이해해보면 구현하기 쉬운 문제이다.
먼저 첫 줄에 2차원 배열의 크기 N, M이 주어진다. 즉 2, 3이면 arr[2][3] 이 되는것이다.
이후 그 아래에 배열의 입력값들이 입력되고
그리고 합을 구할 부분의 개수 K의 값이 입력이 된다. 즉 3을 입력하면 3번 구하는 것이다.
이후 i, j ,x, y의 값이 주어지는데 이거는 arr[i][j] 부터 arr[x][y]까지의 값의 합을 구하는 것이다.
즉 1 1 2 3 이 주어지면 arr[1][1]부터 arr[2][3]의 값을 구하면 되는것이다.
이렇게 문제를 이해하고나면 코드를 짜기 쉬워진다.
● 코드
import java.util.*;
import java.io.*;
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());
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());
for(int h = 0; h < K; h++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken()) - 1;
int j = Integer.parseInt(st.nextToken()) - 1;
int x = Integer.parseInt(st.nextToken()) - 1;
int y = Integer.parseInt(st.nextToken()) - 1;
int count = 0;
for(int a = i; a <= x; a++) {
for(int b = j; b <= y; b++)
count += arr[a][b];
}
System.out.println(count);
}
}
}
728x90
'Study > BaekJoon' 카테고리의 다른 글
[백준 자바JAVA] 11656번- 접미사 배열 (0) | 2024.08.20 |
---|---|
[백준 자바JAVA] 11728번- 배열 합치기 (0) | 2024.07.30 |
[백준 자바JAVA] 9093번 - 단어 뒤집기 (0) | 2024.07.27 |
[백준 자바JAVA] 2606번 - 바이러스 (2) | 2024.07.23 |
[백준 자바JAVA] 18258번 - 큐 2 (1) | 2024.07.22 |