본문 바로가기

Algorithm

(C, C++) - 백준(BOJ) 11659 : 구간 합 구하기 4

반응형

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

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net

누적합 문제였습니다.

 

풀이방법

 누적합입니다.

 

Code

C언어

#include <stdio.h>
int a[100001], s[100001], n, m, x,y;
int main() {
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d",&a[i]);
        s[i] = s[i - 1] + a[i];
    }
    while (m--)
    {
        scanf("%d %d", &x, &y);
        printf("%d\n",s[y]-s[x-1]);
    }
}

 

 

C++언어

 

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int n, m, num[100001], sum[100001];

int main(){
    fastio;
    cin >> n >> m;
    for(int i = 1; i <= n; i++) cin >> num[i], sum[i] = sum[i-1] + num[i];

    for(int i = 1; i <= m; i++){
        int a,b;
        cin >> a >> b;
        cout << sum[b] - sum[a-1] << '\n';
    }
}