https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
- 1 ≤ N ≤ 100,000
- 1 ≤ M ≤ 100,000
- 1 ≤ i ≤ j ≤ N
이므로 시간복잡도 O(N)이 되어야합니다.
문제 풀이 :
N배열이 5 4 3 2 1일 때, 배열의 합들을 누적해서 0 5 9 12 14 15 로 만들어줍니다.
i번째 수부터 j번째 수까지 합은 arr[j] - arr[i-1]이 됩니다.
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[] arr = new int[N+1];
for(int i = 1; i<= N; i++) {
int x = sc.nextInt();
arr[i] = arr[i-1]+x;
}
for(int i = 0; i<M; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
System.out.println(arr[y]-arr[x-1]);
}
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[백준] 마법사 상어와 비바라기 java 21610번 (0) | 2022.04.05 |
---|---|
[백준] 2003 수들의 합2 java (0) | 2021.06.28 |
[프로그래머스] 게임 맵 최단거리 java (0) | 2021.06.24 |
[프로그래머스] 폰켓몬 java (0) | 2021.06.22 |
[프로그래머스] 로또의 최고 순위와 최저 순위 java (0) | 2021.06.13 |