반응형
https://www.acmicpc.net/problem/4344
- 문제
- 문제 풀이
백준 4344번 평균은 넘겠지는 브론즈 1 난이도의 수학 문제이다. 이 문제에서는 C개의 테스트 케이스가 있고 각 테스트 케이스에는 학생 N명의 점수가 주어진다. 그리고 각 테스트 케이스마다 평균을 넘는 학생의 비율을 소수점 셋째 자리로 반올림한 후에 출력하면 되는 문제이다.
이 문제에서는 int형 배열 scores를 선언했다. 이 이유는 각 학생의 점수가 2번씩 필요하기 때문이다. 처음에는 학생들의 시험 성적을 평균을 낼 때 필요하고 그다음에는 각 학생의 점수가 평균 이상인지 확인할 때 필요하다. 그리고 그다음에 double형 변수 sum에 모든 학생들의 점수를 더하고 평균을 낸다. scores 배열에 모든 학생들의 시험 성적이 있기 때문에 총 몇 명이 평균 이상인지를 구할 수 있다. 이것은 count에 저장하고 마지막에 n으로 나눠서 비율을 구할 수 있다.
소수점 세 자리로 답을 출력해야 하기 때문에 String.format 함수를 이용해서 풀 수 있다. 다음과 같이 이 함수를 사용하면 소수점 세 자리로 반올림하여 구할 수 있다.
String.format("%.3f", number);
자세한 코드는 밑에서 참고할 수 있다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int c = Integer.parseInt(br.readLine()); //테스트 케이스 개수
StringBuilder sb = new StringBuilder();
for (int i = 0; i < c; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int[] scores = new int[n];
double sum = 0;
for (int j = 0; j < n; j++) {
scores[j] = Integer.parseInt(st.nextToken());
sum += scores[j];
}
sum /= (double)n; //평균 구하기
double count = 0; //평균 이상이 몇 명인지 세기
for (int j = 0; j < n; j++) {
if (scores[j] > sum) {
count++;
}
}
count /= (double)n;
count *= 100; //평균 이상인 확률 구하기
String s = String.format("%.3f", count); //세자리수로 반올림 하기
sb.append(s + "%\n");
}
System.out.print(sb);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 2839번 : 설탕 배달 – JAVA [자바] (0) | 2022.07.07 |
---|---|
[백준] 10809번 : 알파벳 찾기 – JAVA [자바] (0) | 2022.07.07 |
[백준] 8958번 : OX퀴즈 – JAVA [자바] (0) | 2022.07.07 |
[백준] 3052번 : 나머지 – JAVA [자바] (0) | 2022.07.07 |
[백준] 1152번 : 단어의 개수 – JAVA [자바] (0) | 2022.07.07 |
댓글