문제 링크
https://www.acmicpc.net/problem/11659
문제 해설
기본적인 dp 문제이다. a~b 까지의 합을 구하는 방법을 0~b까지의 누적합 - 0~a까지의 누적합 으로 구하면 매번 구간합을 구하는 시간 복잡도가 j-i 번 -> 2번으로 바뀐다.
정답 코드
#include<iostream>
using namespace std;
int arr[100001];
int sum[100001]; //누적합
int main() {
int n, m;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> arr[i];
sum[i] = sum[i - 1] + arr[i];
}
for (int k = 0; k < m; k++) {
int i, j;
cin >> i >> j;
cout << sum[j] - sum[i-1]<<'\n';
}
// 5,9,12
}
'코딩테스트' 카테고리의 다른 글
[백준 17780,17837] 새로운 게임1,2 c++ (완전 탐색, 구현) (0) | 2023.08.28 |
---|---|
[카카오 인턴십 2020] 동굴탐험 java (위상정렬) (0) | 2023.08.25 |
[프로그래머스 고득점 kit] 다리를 지나는 트럭 c++ (queue) (0) | 2023.08.19 |
c++ Split 함수 구현하기 (0) | 2023.08.19 |
[프로그래머스 고득점 kit] N으로 표현 c++ (dp, 완전 탐색) (0) | 2023.08.15 |