문제링크
문제 접근
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int[] score = new int[N+1];
int[] sum = new int[N+1];
st = new StringTokenizer(br.readLine());
int temp = 0;
for(int i=1;i<=N;i++){
int nowScore = Integer.parseInt(st.nextToken());
temp += nowScore;
score[i] = nowScore;
sum[i] = temp;
}
StringBuilder sb = new StringBuilder();
for(int k=0;k<K;k++){
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
int nowSum = sum[end] - sum[start-1];
double avg = (double) nowSum / (end - start + 1);
String result = String.format("%.2f", avg);
sb.append(result+"\n");
}
System.out.print(sb.toString());
}
}
결과

정리
- InputStreamOut 이 아니라 InputStreamReader.....
- Int형 나누기로 double 계산할 때 앞에 형변환 (double)해야 소수점 나옴
- String.format()으로 두자리까지 표현