Lewis's Tech Keep
[백준] 구간 합 구하기 4 본문
- 참고: www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
- DP 문제
- 구간 합을 미리 저장해 놓는다면 기존 O(NM)에 시간 복잡도를 가지던 합 계산이 O(1) 안에 풀리게 된다.
(미리 저장해 두므로)
더보기
import java.util.Scanner;
public class Solution {
// prefix sum
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] num = new int[n+1];
for(int i = 1; i<=n; i++) {
num[i] = sc.nextInt();
}
int[][] indices = new int[m][2];
for(int j=0; j<m; j++) {
indices[j][0] = sc.nextInt();
indices[j][1] = sc.nextInt();
}
int[] dp = new int[n+1];
dp[0] = 0;
for(int i=1; i<=n;i++) {
dp[i] = dp[i-1] + num[i];
}
int idx = 0;
while(idx < m) {
System.out.println(dp[indices[idx][1]] - dp[indices[idx][0]-1]);
idx++;
}
}
}
'Java > 알고리즘' 카테고리의 다른 글
[백준] N과 M (0) | 2021.03.07 |
---|---|
[백준] 1로 만들기 -2 (0) | 2021.03.06 |
[백준] RGB 거리 (0) | 2021.03.06 |
[백준] 계단 오르기 (0) | 2021.03.05 |
[백준] 1, 2, 3 더하기 (0) | 2021.03.05 |
Comments