코딩문제
[소프티어] 성적평균
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;
}
}