나의 풀이.
처음에 문제를 봤을 때 경로에 대한 합이라고 해서 그 앞에 모든 길을 지나야 접근해 더해준다고 생각했는데
예제 1의 마지막 줄이 음? 아닌데 해서 다시 생각해보니 인덱스 증가에 따른 합을 구해주면 되는 문제였다.
가령 i, j , x, y -> 1, 1, 2, 3 이면 [1][1], [1][2], [1][3], [2][1], [2][2], [2][3] 을 더해주면 된다.
모든 2차원배열의 합이므로 63이 나온다.
1, 2, 1, 2 일 경우에는 [1][2], [1][2] 변함이 없기에 하나의 값만 더해준다.
1, 3, 2, 3 일 경우에는 [1][3], [2][3] 만 더해주면 되서 36이 나온다.
그려가면서 한 40분 고민했던거 같다....
import java.util.Scanner;
public class TwoDimension2167 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[][] arr = new int[N][M];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = sc.nextInt();
}
}
int K = sc.nextInt();
for (int k = 0; k < K; k++) {
int i = sc.nextInt();
int j = sc.nextInt();
int x = sc.nextInt();
int y = sc.nextInt();
int sum = 0;
for (int row = i - 1; row < x; row++) {
for (int col = j - 1; col < y; col++) {
sum += arr[row][col];
}
}
System.out.println(sum);
}
}
}
'CODING TEST' 카테고리의 다른 글
기초수학 - 집합(Set)과 관련 코딩테스트 문제들 (0) | 2023.05.31 |
---|---|
백준 1890번 - 동전 0 (0) | 2023.05.30 |
백준 1254번 - 팰린드롬 만들기 (0) | 2023.05.29 |
프로그래머스 - 덧칠하기 (0) | 2023.05.26 |
프로그래머스 - 전국 대회 선발 고사 (0) | 2023.05.26 |