알고리즘/문제 풀이

11659번: 구간 합 구하기 4

Themion 2022. 1. 6. 16:42

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