코딩테스트
백준 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);
}
}