https://www.acmicpc.net/problem/11659
내가 작성한 풀이는 다음과 같다.
#include<iostream>
#include<vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
cin >> N >> M;
vector<int> acc_sum(N+1,0); // 누적합
cin >> acc_sum[1];
for (int i = 2; i < N+1; i++) {
int num;
cin >> num;
acc_sum[i] = acc_sum[i - 1] + num;
}
//for (int i = 0; i < N; i++) {
// cout << acc_sum[i] << " ";
//}
for (int i = 0; i < M; i++) {
int start, end;
cin >> start >> end;
cout << acc_sum[end] - acc_sum[start-1] << "\n";
}
}
책에서의 풀이는 다음과 같다.
#include<iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int suNo, quizNo;
cin >> suNo >> quizNo;
int S[100001] = {};
for (int i = 1; i <= suNo; i++) {
int temp;
cin >> temp;
S[i] = S[i - 1] + temp; // 구간 합 구하기
}
for (int i = 0; i < quizNo; i++) {
int start, end;
cin >> start >> end;
cout << S[end] - S[start - 1] << "n";
}
}