백준 11659
백준 11659 문제
import java.io.*;
import java.util.*;
public class Boj11659 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int numCount = Integer.parseInt(st.nextToken());
int questionCount = Integer.parseInt(st.nextToken());
long[] sumArr = new long[numCount + 1];
st = new StringTokenizer(br.readLine());
for (int i = 1; i < sumArr.length; i++) {
sumArr[i] = sumArr[i - 1] + Integer.parseInt(st.nextToken());
}
for (int q = 0; q < questionCount; q++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
System.out.println(sumArr[j] - sumArr[i - 1]);
}
}
}
풀이
- 한 줄에 최대 10만개의 많은 숫자가 들어올 수 있기 때문에 BufferedReader와 StringTokenizer를 사용
- 0번째 인덱스를 없는 거라 생각하고 합 배열의 크기를 +1하여 선언한다.
- 이전 합 배열 인덱스의 값과 현재의 값을 더하여 합 배열의 할당한다.
- 입력된 시작 인덱스와 마지막 인덱스를
i와 j 변수에 할당하고, sumArr[j] - sumArr[i - 1]로 계산하여 출력한다.