티스토리 뷰

반응형

✏️ 문제 링크

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

 

2167번: 2차원 배열의 합

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

www.acmicpc.net

 

✏️ 문제 설명

 

 

✏️ 문제 풀이

2차원 배열의 누적 합을 구하는 문제입니다.

사실 그렇게 어려운 게 아니여서 코드를 보시면 이해가 될 것 같습니다.

비슷한 문제로는 백준 구간 합 구하기 5 문제가 있습니다.

 

✏️ 문제 코드

#include<iostream>
using namespace std;

int arr[301][301];
int dSum[301][301];
int resultSum(int a, int b, int x, int y);
int main() {

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N, M;
	cin >> N >> M;
	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= M; j++) {
			cin >> arr[i][j];
		}
	}
	
	for(int i=1;i<=N;i++){
		for (int j = 1; j <= M; j++) {
			dSum[i][j] = dSum[i - 1][j] + dSum[i][j - 1] - dSum[i - 1][j - 1] + arr[i][j];
		}
	}
	
	int K;
	cin >> K;

	while (K--) {
		int i, j, x, y;
		cin >> i >> j >> x >> y;
		cout << resultSum(i, j, x, y) << "\n";
	}


}

int resultSum(int a, int b, int x, int y)
{
	int res = 0;
	if (a == x && b == y)
		return arr[a][b];

	res = dSum[x][y] - dSum[a - 1][y] - dSum[x][b - 1] + dSum[a - 1][b - 1];
	return res;

}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함