득이공간

[백준 C++] 11659 구간 합 구하기 4 - 자료구조 본문

PS/알고리즘 문제풀이

[백준 C++] 11659 구간 합 구하기 4 - 자료구조

쟁득 2024. 2. 3. 14:18
 

11659번: 구간 합 구하기 4

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

www.acmicpc.net

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

vector<int> Sum;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N, M;
	cin >> N >> M;

	Sum.reserve(N);
	for (int i = 0; i < N; ++i)
	{
		int Number;
		cin >> Number;

		if (i == 0)
		{
			Sum.emplace_back(Number);
		}
		else
		{
			Sum.emplace_back(Sum[i - 1] + Number);
		}
	}

	for (int i = 0; i < M; ++i)
	{
		int A, B;
		cin >> A >> B;

		int Src = A - 2;
		int Dst = B - 1;

		if (Src < 0)
		{
			cout << Sum[Dst] << '\n';
		}
		else
		{
			cout << Sum[Dst] - Sum[Src] << '\n';
		}
	}
}

합 배열을 이용해서 푸는 구간 합 문제입니다.

인덱스 접근에 주의하며 풀었습니다.