코딩문제

[소프티어] 성적평균

do_hyuk 2025. 1. 23. 22:24

https://softeer.ai/practice/6294#pop_user

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

이번 문제는 어려운 알고리즘이 존재하진 않았다고 생각하고 배울만한 점은 StringTokenizer 선언하는 위치에 대해 확실하게 알게된 점이랑 소수점 반올림 방식 중 String.format("%.nf", 숫자) 을 사용하여 소수점 n의 자리까지 표현 가능한 것을 배웠다.

 

전체 코드

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

public class Main {

    private static int[] grades;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine()," ");

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine(), " ");

        grades = new int[N];
        for (int n=0; n<N; n++) {
            grades[n] = Integer.parseInt(st.nextToken());
        }

        for (int k=0; k<K; k++) {
            st = new StringTokenizer(br.readLine(), " ");
            int A = Integer.parseInt(st.nextToken());
            int B = Integer.parseInt(st.nextToken());

            String avg = String.format("%.2f", calculator(A,B));

            bw.write(avg);
            bw.newLine();
        }

        bw.flush();
        bw.close();
    }

    private static double calculator(int A, int B) {
        int sum = 0;
        int cnt = B-A+1;

        for (int i=A-1; i<B; i++) {
            sum += grades[i];
        }
        return (double) sum /cnt;
    }
}