[백준] 4344번 평균은 넘겠지 - Java

Bob·2021년 4월 18일
0

Baekjoon

목록 보기
6/14

4344번 평균은 넘겠지 풀러가기

문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

예제 입력 1

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

예제 출력 1

40.000%
57.143%
33.333%
66.667%
55.556%

나의 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// test case 입력 받기        
		int c = Integer.parseInt(br.readLine());
		
		String answer = "";
		
		for(int i = 0; i < c; i++) {
			double upMem = 0;
			// 학생의 수와 점수를 입력받는다.            
			String[] strArr = br.readLine().split(" ");
			double sum = 0;
			// 학생 점수의 합을 구한다.            
			for(int j = 1; j < strArr.length; j++) {
				sum += Integer.parseInt(strArr[j]);
			}
			// 학생 점수의 평균을 구한다.            
			double avg = sum / (double) Integer.parseInt(strArr[0]);
			// 평균과 학생들의 점수를 비교한다.			
			for(int j = 1; j < strArr.length; j++) {
				int grade = Integer.parseInt(strArr[j]);
				if(grade > avg) {
					upMem++;
				}
			}
			// format을 이용해 반올림과 퍼센트를 나타낸다.            
			answer += String.format("%.3f", (upMem / (double) Integer.parseInt(strArr[0])) * 100) + "%\n";
		}
		
		System.out.println(answer);
	}
}

다른 사람의 풀이

import java.io.*;

public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int C = Integer.parseInt(br.readLine());

		while(C-- > 0) {
			String[] input = br.readLine().split(" ");
			int N = Integer.parseInt(input[0]);
			int[] scores = new int[N];
			double avg = 0;
			
			for(int i = 0; i<N; ++i) {
				scores[i] = Integer.parseInt(input[i+1]);
				avg+=scores[i];
			}

			avg/=N;
			double cnt = 0;
			for(int i : scores)
				if(i > avg) cnt+=1;
			
			bw.write(String.format("%.3f", cnt/N*100));
			bw.write("%\n");
		}
		bw.flush();
	}
}

0개의 댓글