🔎 전체코드
#include <bits/stdc++.h>
using namespace std;
void print(vector<int> const &a) {
for (auto i = 0; i < a.size(); i++) {
cout << a[i] << " ";
}
cout << "\\n";
}
// 누적합
vector<int> make_psum(vector<int> &a) {
vector<int> psum;
psum.push_back(0);
for (auto i = 0; i < a.size(); i++) {
psum.push_back(psum[i] + a[i]);
}
return psum;
}
// 구간합
int section_sum(vector<int> &psum, int from, int to) {
return psum[to] - psum[from - 1];
}
void print_section_sum(vector<int> &psum, int from, int to) {
cout << "from: " << from << " , to: " << to << ", result: " << section_sum(psum, from, to) << "\\n";
}
int main() {
vector<int> a = {1, 2, 3, 4, 5};
vector<int> psum = make_psum(a);
print(psum);
print_section_sum(psum, 1, 4);
return 0;
}
🔎 누적합
// 누적합
vector<int> make_psum(vector<int> &a) {
vector<int> psum;
psum.push_back(0);
for (auto i = 0; i < a.size(); i++) {
psum.push_back(psum[i] + a[i]);
}
return psum;
}
🔎 구간합
// 구간합
int section_sum(vector<int> &psum, int from, int to) {
return psum[to] - psum[from - 1];
}
- 원소들의 구간합을 구할 때 편의상 0이 아닌 1부터 센다.