www.acmicpc.net/problem/11659

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net


  • 전부 더하면 시간초과가 날 것이 뻔하기 때문에, 양쪽 인덱스가 들어올 때 해당 인덱스까지의 누적합의 차로 구해준다.
  • ios_base::sync_with_stdio 로 끊어줘도 iostream 쓰면 시간초과가 나니 그냥 stdio 입출력 함수 쓸 것.

#include <stdio.h>

int N, M, temp;
int l, r;
int cumsum[100001];

int main(void)
{
    scanf("%d %d", &N, &M);
    for(int i = 1 ; i <= N ; i++)
    {
        scanf("%d", &temp);
        cumsum[i] = cumsum[i-1] + temp;              // i 까지의 누적합을 저장
    }
    for(int i = 0 ; i < M ; i++)
    {
        scanf("%d %d", &l, &r);
        printf("%d\n", cumsum[r] - cumsum[l-1]);    // l 과 r 구간의 합은 r 까지 누적합 - l 전까지의 누적합
    }
}

'PS > BOJ' 카테고리의 다른 글

[백준] 10830 : 행렬 제곱  (0) 2021.05.02
[백준] 16928 : 뱀과 사다리 게임  (0) 2021.05.01
[백준] 1707 : 이분 그래프  (0) 2021.04.13
[백준] 2583 : 영역 구하기  (0) 2021.04.12
[백준] 14938 : 서강그라운드  (0) 2021.04.10

+ Recent posts