*solved.ac 기준 실버5단계 문제
풀이)
여러 개의 숫자가 주어지고 그 숫자 구간의 합을 구할 때 계산을 빠르게 하기 위해 구간의 합을 저장하는 배열 sum을 만들어 계산한다.
주어진 숫자 중 1, 2, 3번째 숫자의 합을 구하려면 sum[3]-sum[0] 을 하면 된다.
내 코드)
//Scanner 사용
import java.util.Scanner;
public class Backjoon11659{
public static void main(String[]args) {
Scanner s = new Scanner(System.in);
int D = s.nextInt();
int T = s.nextInt();
int sum[] = new int[D+1];
sum[0] = 0;
for(int i=1;i<D+1;i++) {
sum[i] = sum[i-1] + s.nextInt();
}
for(int i=0;i<T;i++) {
int fir = s.nextInt();
int last = s.nextInt();
System.out.println(sum[last]-sum[fir-1]);
}
}
}
내 코드 2)
import java.io.*;
import java.util.StringTokenizer;
public class Backjoon11659{
public static void main(String[]args)throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int D = Integer.parseInt(st.nextToken());
int T = Integer.parseInt(st.nextToken());
int sum[] = new int[D+1];
sum[0] = 0;
st = new StringTokenizer(bf.readLine());
for(int i=1;i<D+1;i++) {
sum[i] = sum[i-1] + Integer.parseInt(st.nextToken());
}
for(int i=0;i<T;i++) {
st = new StringTokenizer(bf.readLine());
int fir = Integer.parseInt(st.nextToken());
int last = Integer.parseInt(st.nextToken());
System.out.println(sum[last]-sum[fir-1]);
}
}
}
scanner과 buffer의 차이가 유의미하다.