백준 11659번: 구간 합 구하기 4
1. 문제 설명

2. 문제 풀이
arr[i]=arr[i-1]+Integer.parseInt(st.nextToken());
arr[end]-arr[start-1]
- Scanner: 편리하지만 속도가 느림
- BufferedReader: 입력 속도가 빠름
- Sccaner는 버퍼 크기가 1024 chars, BufferedReader의 버퍼 크기는 8192 chars
- Scanner는 문자열을 구분해 분석하는 파싱이 가능하고 BufferedReader는 파싱기능이 제공되지 않아 읽기만 가능
- BufferedReader는 입력 시 바로 동기화가 되지만 Scanner는 동기화가 되지 않음
- BufferedReader는 즉시 IOException을 던지지만 Scanner는 숨김
1. Scanner 사용
import java.io.*;
import java.util.*;
public class No_11659 {
public static void main(String[] args) throws IOException{
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++) {
arr[i]=arr[i-1]+sc.nextInt();
}
for(int i=0;i<M;i++) {
int start=sc.nextInt();
int end=sc.nextInt();
System.out.println(arr[end]-arr[start-1]);
}
}
}
- 실행결과

2. BufferedReader 사용
import java.io.*;
import java.util.*;
public class No_11659 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
int N=Integer.parseInt(st.nextToken());
int M=Integer.parseInt(st.nextToken());
st=new StringTokenizer(br.readLine());
int [] arr= new int[N+1];
for(int i=1;i<=N;i++) {
arr[i]=arr[i-1]+Integer.parseInt(st.nextToken());
}
for(int i=0;i<M;i++) {
st=new StringTokenizer(br.readLine());
int start=Integer.parseInt(st.nextToken());
int end=Integer.parseInt(st.nextToken());
System.out.println(arr[end]-arr[start-1]);
}
}
}
- 실행결과
