[소프티어] 성적 평균카테고리 없음2024. 2. 1. 22:33
Table of Contents
문제
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
풀이
- 반올림 메서드 두개를 배웠당
- String.format(”%.2f”, 반올림할 수);
- BigDecimal 이용
import java.math.BigDecimal; import java.math.RoundingMode; public class RoundExample { public static void main(String[] args) { double originalValue = 12.34567; // 소숫점 셋째 자리에서 반올림 BigDecimal roundedValue = BigDecimal.valueOf(originalValue).setScale(3, RoundingMode.HALF_UP); System.out.println("Original Value: " + originalValue); System.out.println("Rounded Value: " + roundedValue.doubleValue()); } }
import java.io.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) throws IOException {
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];
//성적
st = new StringTokenizer(br.readLine());
for(int n =1; n<=N;n++){
score[n] = Integer.parseInt(st.nextToken());
}
//구간
double[] results = new double[K];
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 sum =0;
for(int ind=start;ind<=end;ind++){
sum+=score[ind];
}
double divided = (sum*(1.0))/((end-start+1)*(1.0));
results[k] = divided;
}
for(double result : results){
System.out.println(String.format("%.2f",result));
}
}
}
@gani+ :: Gani_Dev :)
꾸준히 기록할 수 있는 사람이 되자 !