https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
첫 번째 수부터 i번째 수까지의 합을 각각 배열 sum에 저장한 뒤, 각 테스트 케이스에서 sum[j] - sum[i - 1]을 출력한다.
#include <iostream>
using namespace std;
#define MAX_N 100000
int main() {
// 입출력 속도 향상
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// N: 수의 개수, M: 쿼리의 개수, sum[i]: 1번째 수부터 i번째 수까지의 합
// i, j: 인덱스
int N, M, sum[MAX_N + 1] = { 0, }, i, j;
// 수의 개수와 쿼리의 개수를 입력받은 뒤
cin >> N >> M;
for (i = 1; i <= N; i++) {
// 각 수를 입력받아 합을 sum에 저장
cin >> j;
sum[i] = sum[i - 1] + j;
}
// 각 쿼리마다
while (M--) {
// 합을 구할 구간을 입력받은 뒤
cin >> i >> j;
// (1부터 j까지의 합) - (1부터 i - 1까지의 합)을 출력
cout << sum[j] - sum[i - 1] << '\n';;
}
return 0;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
11718번: 그대로 출력하기 (0) | 2022.01.06 |
---|---|
11660번: 구간 합 구하기 5 (0) | 2022.01.06 |
11654번: 아스키 코드 (0) | 2022.01.06 |
11653번: 소인수분해 (0) | 2022.01.06 |
11651번: 좌표 정렬하기 2 (0) | 2022.01.06 |