오랜만에 낮에 하는 코딩😀
보통 구간 합을 구할때 반복문을 이용해 O(n)의 시간복잡도를 갖는다. 이 문제에서는 전처리를 진행해 O(1)에 구간 합을 구할 수 있도록 했다. (물론, 전처리 과정은 O(n)입니다)
pSum이라는 배열에 처음부터 x개 원소의 합을 저장하는 전처리를 진행했다. 구간을 입력받으면 이 배열을 이용해 O(1)으로 계산을 진행할 수 있었다.
import java.util.Scanner;
public class SumOfIntervals {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] array = new int[n];
        for (int i = 0; i < n; i++) {
            array[i] = sc.nextInt();
        }
        int[] pSum = new int[n + 1];
        pSum[0] = 0;
        for (int i = 0; i < n; i++) {
            pSum[i + 1] = pSum[i] + array[i];
        }
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < m; i++) {
            int start = sc.nextInt();
            int end = sc.nextInt();
            int sumOfIntervals = pSum[end] - pSum[start - 1];
            result.append(Integer.toString(sumOfIntervals) + "\n");
        }
        System.out.print(result.toString());
    }
}