키베이루's diary

[C++] 백준 11659번 구간 합 구하기 4 본문

알고리즘/기타

[C++] 백준 11659번 구간 합 구하기 4

키베이루 2022. 7. 6. 12:30

 

1) 문제설명

백준 Online Judge 11659번 구간 합 구하기 4

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

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net

 

2) 아이디어

for문을 2번 사용하여 구간의 합을 구 할 경우 O(N^2)의 시간이 걸리기 때문에 O(N+M)의 시간 안에 문제를 해결해야 한다.

구간의 합을 배열로 설정한 후 미리 구하여 b번째의 합에서 a-1번째의 합까지를 빼면 구간 a~b까지의 구간의 합을 구할 수 있다.

 

3) 코드

#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>

using namespace std;
int arr[100001];
int sum[100001];
int main() {
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &arr[i]);
	}
	for (int i = 1; i <= n; i++) {
		sum[i] = sum[i - 1] + arr[i];
	}
	for (int i = 0; i < m; i++) {
		int a, b;
		scanf("%d %d", &a, &b);
		printf("%d\n", sum[b] - sum[a - 1]);
	}
}

'알고리즘 > 기타' 카테고리의 다른 글

[C++] 백준 10816번 숫자 카드 2  (0) 2022.07.16
[C++] 백준 2559번 수열  (0) 2022.07.08
[C++] 백준 1920번 수 찾기  (0) 2022.07.05
[C++] 백준 10815번 숫자 카드  (0) 2022.07.05
[C++] 백준 16953번 A -> B  (0) 2022.06.21
Comments