본문 바로가기

Algorithm/Baekjoon BOJ

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

반응형

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

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net

 

 

 

 


- 문제

 

  i번째 부터 j번째 수까지 합을 구하는 문제다.

 

 


- 해설

 

i부터 j까지 합을 계속 반복문으로 돌리면 시간초과가 나는 문제다.

 

0 1 2 3 4 5 6 7 8 9 라는 수가 있으면

 

4부터 7까지의 합은 

 

7까지의 합 - 3까지의 합이 된다는 것을 이용해서 풀면 된다.

 

 

 

 

 

 


- 풀이

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

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

    int N, M, i, j, temp, answer;

    cin >> N >> M;
    vector<int> v(N + 1);
    v[0] = 0;
    for (int l = 1; l <= N; l++)
    {
        cin >> temp;
        v[l] = v[l - 1] + temp;
    }
    for (int l = 0; l < M; l++)
    {
        cin >> i >> j;
        cout << v[j] - v[i - 1] << '\n';
    }

    return 0;
}

 

 


- 새롭게 알게 된 점

 

 

반응형

'Algorithm > Baekjoon BOJ' 카테고리의 다른 글

[백준][C++] 16139: 인간-컴퓨터 상호작용  (0) 2022.11.11
[백준][C++] 2559: 수열  (0) 2022.11.10
[백준][C++] 2580: 스도쿠  (2) 2022.11.08
[백준][C++] 1912: 연속합  (0) 2022.11.04
[백준][C++] 9461: 파도반 수열  (0) 2022.11.04