코딩테스트

[BOJ_4344/JAVA] 평균은 넘겠지

Eun 2021. 12. 15. 18:26

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

문제

풀이

이번 문제는 굉장히 쉬웠다. 정답비율이 왜 저렇게 나왔는지 모를정도...

1. BufferedReader로 한줄을 다 입력받고

2. StringTokenizer로 공백을 기준으로 다 쪼개주었다.

3. 학생 수만큼 배열에 값 넣어주고

4. for문 돌면서 평균구해주기

5. for문 돌면서 평균보다 큰 점수 있으면 count++

6. 큰 점수의 비율을 구해서 출력!

 

이번에 핵심은 소수점 셋째 자리까지 구하는 것인 것 같다.

String.format("%.3f", avg);

코드

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

public class BOJ4344 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		
		int num = Integer.parseInt(br.readLine());
		
		
		for(int i=0;i<num;i++) {
			
			st = new StringTokenizer(br.readLine());
			
			int index=0;
			double student = Double.parseDouble(st.nextToken());
			double [] score = new double[(int) student];
			
			while(st.hasMoreTokens()) {
				score[index]=Integer.parseInt(st.nextToken());
				index++;
			}
			
			int sum=0;
			double avg=0;
			
			for(int j=0;j<student;j++) {
				sum+=score[j];
			}
			
			avg=sum/student;			
			double count=0;
			
			for(int k=0;k<student;k++) {
				if(avg<score[k]) {
					count++;
				}
			}
			
			double result=count/student*100;
			
			sb.append(String.format("%.3f", result)).append("%\n");		
		}
		
		System.out.println(sb);

	}

}