코테/백준
백준 4344 평균은 넘겠지
65살까지 코딩
2022. 1. 19. 09:50
728x90
반응형
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//테스트 케이스만큼 입력받음
int C = Integer.parseInt(br.readLine());
int n = 0;
List<Double> list = new ArrayList<>();
double count =0;
double sum = 0d;
double tmp;
for (int i = 0; i < C; i++) {
//값들 다 비워주기
sum = 0d;
count =0;
list.clear();
//학생들 마다의 점수와 개수 받기
String s = br.readLine();
StringTokenizer st = new StringTokenizer(s);
//개수는 처음에 나옴
n = Integer.parseInt(st.nextToken());
while (st.hasMoreTokens()) {
//점수 입력받고
tmp = Double.parseDouble(st.nextToken());
sum += tmp;
list.add(tmp);
}
//평균에 넣은뒤
sum = sum/n;
// 평균보다 높은사람 있으면 count ++
for (Double aDouble : list) {
if(aDouble > sum){
count ++;
}
}
//확률 구하기
count = count/n *100;
count = Math.round(count * 1000) / 1000.0;
//3째자리까지 출력
System.out.printf("%.3f%s\n",count,"%");
}
}
}
얼마전에 똑같은 문제를 풀었는데 풀이가 좀 다르다 이 때는 bw을 자주 사용했고
요즘은 sb를 사용하거나 sout을 사용하는중 근데 시간을보면 왔다갔다해서 케이스별로 나눠서 사용하는게 좋을 듯
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());
for (int i = 0; i < c; i++) {
String[] scores = br.readLine().split(" ");
int n = Integer.parseInt(scores[0]);
int[] score = new int[n];
int sum = 0;
for (int j = 0; j < n; j++) {
score[j] = Integer.parseInt(scores[j+1]);
sum += score[j];
}
int avg = sum / n;
double higher = 0d;
for (int j = 0; j < n; j++) {
if (score[j] > avg) {
higher += 1.0;
}
}
double answer = 100 * higher / n;
if (i < c - 1) {
bw.write(String.format("%.3f", answer)+'%' + "\n");
}else{
bw.write(String.valueOf(String.format("%.3f", answer)+'%'));
}
}
bw.flush();
bw.close();
}
}
728x90
반응형