백준/C++

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

Campus Coder 2023. 4. 26. 19:53
728x90
반응형

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

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net


풀이

  1. 수를 입력받아서 배열에 저장 - 배열에 각각 저장해서 더하면 시간 초과
    -> 배열에는 배열의 이전 인덱스의 값과 입력받은 수의 합 저장
  2. 배열에서 합을 구해야 하는 구간 (끝 부분) 인덱스 값 - (처음 부분 - 1) 인덱스 값을 구하면 i~j번째 수의 합

#include <iostream>
using namespace std;
int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(NULL); //입력을 자주 받는 문제라 입력시간 줄이기

    int N, M, r, l, k;
    cin >> N >> M;
    int a[N + 1];
    a[0] = 0;
    for (int i = 1; i <= N; i++)
    {
        cin >> k;
        a[i] = k + a[i - 1];
    }
    for (int i = 0; i < M; i++)
    {
        cin >> l >> r;
        cout << a[r] - a[l - 1] << "\n";
    }
}
728x90
반응형

'백준 > C++' 카테고리의 다른 글

[백준][C++] 18111번 - 마인크래프트  (0) 2023.07.10
[백준][C++] 11727번 - 2×n 타일링 2  (0) 2023.04.17