카테고리 없음

[Softeer Lv.3] 성적평균 (Java)

삐뚤어진 개발자 2023. 11. 11.

 

softeer 문제 정의

N명의 학생들의 성적이 학번순서대로 주어졌다.

 

학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라.

제약조건

1 ≤ N ≤ 106 인 정수

1 ≤ K ≤ 104 인 정수

1 ≤ Si ≤ 100 인 정수

1 ≤ Ai ≤ Bi ≤ N

입력형식

첫 번째 줄에 학생 수 N과 구간 수 K가 주어진다.

두 번째 줄에는 학생의 성적 Si (1 ≤ i ≤ N)가 주어진다. i + 2 (1 ≤ i ≤ K)번째 줄에는 i번째 구간 Ai, Bi가 주어진다.

출력형식

i번째 줄에 i번째 구간의 성적평균(소수셋째자리에서 반올림)을 출력한다.

차이가 0.01이하이면 정답으로 채점됨.

입력예제1

5 3 10 50 20 70 100 1 3 3 4 1 5

출력예제1

26.67 45.00 50.00

 

 

코드

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException{
      // 1. data
      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];
      st = new StringTokenizer(br.readLine());
      for(int i=0; i<N; i++){
        score[i] = Integer.parseInt(st.nextToken());
      }
      int[][] section = new int[K][2];
      for(int i =0; i <K; i++){
        st = new StringTokenizer(br.readLine());
        section[i][0] = Integer.parseInt(st.nextToken());
        section[i][1] = Integer.parseInt(st.nextToken());
      }

      // 2. logic
      double total_sum =0;
      double student_cnt =0;
      double result =0;
      for(int i =0; i <K; i++){
        total_sum =0;
        student_cnt = section[i][1]-section[i][0] +1;
        for(int j =section[i][0]-1; j<section[i][1]; j++){
          total_sum += (double)score[j];
          //System.out.println(score[j]);
        }
        result = (total_sum/student_cnt);

        System.out.println(String.format( "%.2f",result));
      }
    }
}

 

 

 

 

긴글 읽어 주셔서 감사합니다.

더 궁금하신 사항은 댓글로 문의해주시면 빠르게 답변드리겠습니다.

 

 

 

 

댓글