728x90
반응형
11441번: 합 구하기
문제
https://www.acmicpc.net/problem/11441
11441번: 합 구하기
첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는
www.acmicpc.net
풀이
최대 10만 개의 연속된 수의 합을 구해야 한다. 따라서 입력과 동시에 모든 구간 합을 구할 수 있도록 구현이 가능한 누적 합 배열을 만들어 해결할 수 있다. 누적 합 알고리즘은 수열의 합 Sn에 대해 Sn - Sm-1 이 Am ~ An까지의 합과 같음을 이용하는 알고리즘이다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n;
vector<int> v(n + 1);
for (int i = 1; i <= n; i++) {
cin >> v[i];
v[i] += v[i - 1];
}
cin >> m;
while (m--) {
int i, j;
cin >> i >> j;
cout << v[j] - v[i - 1] << '\n';
}
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 2583 영역 구하기 (8) | 2023.05.06 |
---|---|
[백준 / BOJ] C++ 19568 직사각형 (6) | 2023.04.23 |
[백준 / BOJ] C++ 27972 악보는 거들 뿐 (0) | 2023.04.21 |
[백준 / BOJ] C++ 27970 OX (4) | 2023.04.21 |
[백준 / BOJ] C++ 15311 약 팔기 (0) | 2023.04.20 |