본문 바로가기
코딩테스트

백준 4344번

by 멈추지않아 2022. 10. 11.
백준:https://www.acmicpc.net/problem/4344

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



public class Main {
  public static void main(String[] args) throws NumberFormatException, IOException {
    //scan 처럼 int 받아오기
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int fir = Integer.parseInt(br.readLine());
    StringBuilder sb=new StringBuilder();
    //받아온 int만큼 string 배열 만들기
    String[] soi= new String[fir];
    int point=0;
    //점수 총합 받을 공간
    int sum=0;
    
    for(int i=0;i<fir;i++) {
      sum=0;
      //점수를 string으로   5 50 50 70 80 100 이런식으로 받고
      String str= br.readLine();
      //빈공간 기준으로 나눠서 배열로 만든다.
      String[] arr=str.split(" ");
      //첫번째 요소는 점수 갯수
      int cas=Integer.parseInt(arr[0]);
      //평균은 double
      double avg=0.0;
      //첫번째 요소 수만큼 int배열 생성
      int[] one=new int[cas];
      //첫번째는 점수가 아니라 몇개인지 이므로 0빼고  첫번째 인자 만큼 반복
      for(int j=1;j<=cas;j++) {
        //string을 int로 변경
        point= Integer.parseInt(arr[j]);
      //1부터 시작이므로 -1해서 0부터 시작
        one[j-1]=point;
        //합계에 각요소를 더해서 평균구할때 사용
        sum+=point;
      }
      //축적된 수에 갯수를 나눠서 평균 만들기
      avg=(double)sum/cas;
     //평균보다 더큰 갯수를 구한다
     double count=0;
      for(int k=0;k<cas;k++) {
        if(one[k]>avg) {
          //평규보다 크면 1을 더해준다
          count++;
        }
       
      }
      //소수점 3째자리까지 반올림되서 string으로 배열에 저장.
      soi[i]=String.format("%.3f",(count/cas)*100);
      
      
    }

 
    //Stringbuilder를 이용해서 출력할 String을 만든다
    for (int y = 0; y < fir; y++) {
      //출력할때 %를 붙여서 출력
      sb.append(soi[y]+"%").append("\n");
    }
  //출력
    System.out.println(sb);
  }
}

'코딩테스트' 카테고리의 다른 글

백준1316  (0) 2022.10.14
백준5622  (0) 2022.10.13
백준2908  (0) 2022.10.12
백준 8958번  (0) 2022.10.10