소프티어 성적평균 java

정상민·2023년 11월 3일

문제링크

문제 접근

  • 구간합 배열을 만들어 놓고 사용

코드

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()으로 두자리까지 표현
profile
안녕하세요! 개인 공부를 꾸준히 기록하는 공간입니다.

0개의 댓글