https://www.acmicpc.net/problem/2167
๋ฌธ์
2์ฐจ์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋ (i, j) ์์น๋ถํฐ (x, y) ์์น๊น์ง์ ์ ์ฅ๋์ด ์๋ ์๋ค์ ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ฐฐ์ด์ (i, j) ์์น๋ iํ j์ด์ ๋ํ๋ธ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฐฐ์ด์ ํฌ๊ธฐ N, M(1 ≤ N, M ≤ 300)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ M๊ฐ์ ์ ์๋ก ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ค. ๋ฐฐ์ด์ ํฌํจ๋์ด ์๋ ์๋ ์ ๋๊ฐ์ด 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ๊ทธ ๋ค์ ์ค์๋ ํฉ์ ๊ตฌํ ๋ถ๋ถ์ ๊ฐ์ K(1 ≤ K ≤ 10,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ K๊ฐ์ ์ค์๋ ๋ค ๊ฐ์ ์ ์๋ก i, j, x, y๊ฐ ์ฃผ์ด์ง๋ค(1 ≤ i ≤ x ≤ N, 1 ≤ j ≤ y ≤ M).
์ถ๋ ฅ
K๊ฐ์ ์ค์ ์์๋๋ก ๋ฐฐ์ด์ ํฉ์ ์ถ๋ ฅํ๋ค. ๋ฐฐ์ด์ ํฉ์ 231-1๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
ํ์ด
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> input(n+1, vector<int>(m+1));
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin >> input[i][j];
}
}
// ๋์ ํฉ ๊ตฌํ๊ธฐ
vector<vector<int>> sum(n+1, vector<int>(m+1));
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + input[i][j];
}
}
int k, i,j,x,y;
cin >> k;
while(k--) {
cin >> i >> j >> x >> y;
cout << sum[x][y] - sum[i-1][y] - sum[x][j-1] + sum[i-1][j-1] << "\n";
}
return 0;
}
'๐๏ธ ICPC Sinchon > Prefix Sum' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 14246๋ฒ : K๋ณด๋ค ํฐ ๊ตฌ๊ฐ (0) | 2024.08.08 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 11660๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (0) | 2024.08.08 |