백준 문제풀이

11659번 : 구간 합 구하기 4

하다블 2022. 5. 19. 18:27
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/problem/11659

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net

 

풀이 코드는 다음과 같습니다.

 

#include <iostream>
#include <vector>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n, m;
	cin >> n >> m;
	vector<long> v(n + 1);
	v[0] = 0;
	for (int i{1}; i <= n; i++) {
		long num;
		cin >> num;
		v[i] = v[i - 1] + num;
	}
	for (int i{1}; i < m; i++) {
		int s, e;
		cin >> s >> e;
		cout << v[e] - v[s - 1]<<'\n';
	}

	return 0;
}

정해진 구간을 for문 사용하여 구간합을 구하게 되면 시간초과되므로, vector에 넣을 때부터 누적합으로 계산된 값을 입력합니다.

1번부터 시작하기 때문에 0번째 원소에는 0을 먼저 입력해야 한다는 점을 주의해야합니다.

 

반응형

'백준 문제풀이' 카테고리의 다른 글

3046번 : R2  (0) 2022.05.25
18258번 : 큐 2  (0) 2022.05.25
11718번 : 그대로 출력하기  (0) 2022.05.19
11050번 : 이항 계수 1  (0) 2022.05.19
1550번 : 16진수  (0) 2022.05.19