문제 : https://www.acmicpc.net/problem/11659
[알고리즘풀이]
A[N] : 처음에 들어온 값들이 저장되어있는 배열.
dp[N] : 1 ~ N 까지의 합이 저장되어있는 배열.
따라서, dp[K] = dp[K-1] + A[K] 가 성립하고 i ~ j 까지의 구간 합은 dp[j] - dp[ i - 1] 이다.
#include <iostream>
#include <cmath>
using namespace std;
int A[100001] = {};
int dp[100001] = {};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int N, M;
cin >> N >> M;
for (int i = 1; i <= N; i++)
cin >> A[i];
dp[1] = A[1];
for (int i = 1; i <= N; i++)
dp[i] = A[i] + dp[i-1];
int x, y;
for (int i = 0; i < M; i++) {
cin >> x >> y;
cout << dp[y] - dp[x - 1] << '\n';
}
return 0;
}
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 3474 - Factorial (0) | 2019.09.29 |
---|---|
[BOJ] 2153 - 소수단어 (0) | 2019.09.29 |
[BOJ] 7785 - Easy work (0) | 2019.09.24 |
[BOJ] 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2019.09.24 |
[BOJ] 1759 - 암호 만들기 (0) | 2019.09.24 |