- 난이도: 브론즈 1
- 알고리즘: 배열, 누적 합
동적할당하기 귀찮아서 2차원 벡터를 이용해서 코드를 짰다. 이 문제는 마지막 의 뜻이 모호해서 함정이 숨어 있었다. 이라 하면 일줄 알았는데 배열에서 사각형 모양으로 범위를 그려 선택해야 했다. 다른 동기가 먼저 틀려줘서 힌트를 얻을 수 있었다. ㅋㅋㅋ
#include <iostream>
#include <vector>
using namespace std;
int main() {
cin.tie(NULL);
cout.tie(NULL);
std::ios::sync_with_stdio(false);
vector<vector<int>> vec;
vector<int> tempvec;
int n, m, num;
cin >> n >> m;
// 2차원 벡터 대입 과정
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> num;
tempvec.push_back(num);
}
vec.push_back(tempvec);
tempvec.clear();
}
int k;
int a, b, c, d;
int sum = 0;
cin >> k;
for (int i = 0; i < k; i++) {
cin >> a >> b >> c >> d;
for (int e = a - 1; e < c; e++) {
for (int f = b - 1; f < d; f++) {
sum += vec[e][f];
}
}
cout << sum << "\n";
sum = 0;
}
}