728x90
320x100
📌 접근 방법
앞에서 진행한 11659번 문제와 상당히 비슷하다.(링크를 걸어뒀으니 참고!)
- 핑크색은 세로 가로의 누적합을 계속 더해준 상태로 입력한 값이 저장되어야 함!
- 하지만 중복되는 "?" 같은 값이 있기 때문에 빼준다
- 기호로 정리하자면
arr[i][j] = a[i-1][j] + a[i][j-1] -a[i-1][j-1] + input값
✅ PASS CODE
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
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());
long [][]arr = new long[N+1][N+1];
for(int i=1; i<=N; i++){
st = new StringTokenizer(br.readLine());
for(int j=1; j<=N; j++){
arr[i][j] = arr[i][j-1] + arr[i-1][j] - arr[i-1][j-1] + Integer.parseInt(st.nextToken());
}
}
for(int i=0; i<M; i++){
st = new StringTokenizer(br.readLine());
int x1 = Integer.parseInt(st.nextToken());
int y1 = Integer.parseInt(st.nextToken());
int x2 = Integer.parseInt(st.nextToken());
int y2 = Integer.parseInt(st.nextToken());
System.out.println(arr[x2][y2] - arr[x1-1][y2] - arr[x2][y1-1] + arr[x1-1][y1-1]);
}
}
}
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[JAVA][Baekjoon] 2018번 수들의 합 5 🌟 (0) | 2024.03.23 |
---|---|
[JAVA][Baekjoon] 10986번 나머지 합 ⭐️⭐️⭐️⭐️⭐️ (4) | 2024.03.12 |
[JAVA][Baekjoon] 11659번 구간 합 구하기 4 (0) | 2024.03.11 |
[JAVA][Baekjoon] 1546번 평균 (0) | 2024.03.02 |
[JAVA][Baekjoon] 11720번 숫자의 합 (0) | 2024.03.02 |