my study.

Coding Test/Baekjoon

[백준] 4344 평균은 넘겠지, java

fftl 2020. 12. 21. 19:45

www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

import java.io.*; //BufferedReader 를 사용하기 위함

public class Main{
    public static void main(String[] args){
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  //입력값을 받기 위함
        
        int count = 0; //가장 첫줄에 나오는 개수를 담기 위함
        try{
            count = Integer.parseInt(br.readLine()); //첫줄을 받아서 Int로 변환
        } catch (IOException e){
            e.printStackTrace();
        }
        
        for(int i=0; i<count; i++){ //아까 받은 count만큼 반복
            String line = "";       //각 입력받을 줄을 담을 String
            float lineCount = 0;    //각 입력받은 줄의 첫 숫자인 점수의 개수를 담는 float
            float lineSum = 0;      //라인의 점수들의 합
            float lineAve = 0;      //라인의 점수들의 평균
            float upCount = 0;      //라인의 평균보다 높은 점수의 수
            float upAve = 0;        //높은 점수들의 수의 퍼센트?
            
            try{
                line = br.readLine(); //계산할 라인을 가져옴
            } catch (IOException e){
                e.printStackTrace();
            }
            
            String linse[] = line.split(" ");           //라인을 공백으로 분리 해서 linse[] 배열에 넣어줌
            lineCount = Float.parseFloat(linse[0]);     //라인의 첫번째 수를 선언해놓은 lineCount 에 담아줌(점수의 개수) 
            
            for(int j=1; j<linse.length; j++){          //라인의 점수 갯수만큼 반복함
                lineSum = lineSum + Float.parseFloat(linse[j]); //점수들의 합계를 구함
            }
            
            lineAve = lineSum/lineCount;                //라인의 점수의 평균을 구함
            
            for(int j=1; j<linse.length; j++){          //평균을 넘는 점수를 구하기 위해 다시 점수의 개수만큼 반복
                if(Float.parseFloat(linse[j])>lineAve){ //평균을 넘는 점수일 경우
                    upCount++;                          //upCount를 증가
                }
            }
            upAve = upCount/lineCount*100;              //upCount를 점수 개수로 나누고 *100 하여 비율을 구해줌
            System.out.println(String.format("%.3f%%", upAve)); //String.format을 이용해 소숫점 셋째자리까지 출력해 줌
            
            
        }
    }
}

'Coding Test > Baekjoon' 카테고리의 다른 글

[백준] 3052 나머지, java  (0) 2020.12.21
[백준] 1546 평균, java  (0) 2020.12.21
[백준] 10817 세 수, java  (0) 2020.12.21
[백준] 1110 더하기 사이클, java  (0) 2020.12.21
[백준] 2577 숫자의 개수, java  (0) 2020.12.21