알고리즘

백준 11659번 구간 합 구하기 4 (JAVA)

박카스마시며코딩 2023. 11. 20. 23:05

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

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net

 

저는 누적합을 통해 문제를 해결하였습니다.

누적합을 통해 해당 인덱스까지의 합을 구하였습니다.

입력으로 들어오는 구간의 끝 누적합 - (시작 인덱스 -1 )누적합하여 해당 구간의 합을 구하였습니다.

 

package BOJ.etc;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_11659 {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        int[] number = new int[n+1];
        int[] prefixSum = new int[n+1];
        int sum = 0;
        for(int i = 1 ; i <= n ; i++){
            number[i] = Integer.parseInt(st.nextToken());
            sum += number[i];
            prefixSum[i] = sum;
        }
        for(int i = 0 ; i < m ; i++){
            st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            System.out.println(prefixSum[end]-prefixSum[start-1]);
        }
    }
}