알고리즘
[백준] 11659번: 구간 합 구하기 4 - java
육빔
2024. 7. 11. 16:29
728x90
반응형
https://www.acmicpc.net/problem/11659
문제 분석
처음 문제를 보고 단순히 주어진 인덱스에서 for문으로 값을 탐색하여 sum에 더할 수 있으나 빠른 알고리즘을 위해 S[i] = S[i-1] + A[i] 로 배열 값을 저장한 후 합을 출력할때 단순하게 배열값의 차이를 출력하는 방법으로 설계하였다.
문제 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class App {
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bf.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int M = Integer.parseInt(stringTokenizer.nextToken());
int sum = 0;
int []A = new int[N+1];
stringTokenizer = new StringTokenizer(bf.readLine());
for(int i=1; i<N+1; i++){
A[i] = Integer.parseInt(stringTokenizer.nextToken())+ sum;
sum = A[i];
}
for(int j=0; j<M; j++){
stringTokenizer = new StringTokenizer(bf.readLine());
int x = Integer.parseInt(stringTokenizer.nextToken());
int y = Integer.parseInt(stringTokenizer.nextToken());
System.out.println(A[y]-A[x-1]);
}
}
}
728x90
반응형